我一直在嘗試使用Visual Inheritance進行遊戲,以便我可以在多種形式中重用一組按鈕。從基本形式的派生形式上的調用方法
基本上我想要實現,我想的按鈕具有相同的視覺行爲在不同的形式,但是,他們應該執行,這取決於形式繼承它不同的動作。
假設我有FormButtonBar
新以下按鈕|編輯|搜索|取消|關閉
他們應禁用或有自己的文字和圖標根據當前形勢事情改變(我這樣做,使用.Tag
),這些都是可供選擇的選項顯示
保存|保存|刪除|取消|關閉
即使我按照繼承這個的形式工作,我顯然希望這些按鈕處理不同的內容,具體取決於我擁有哪些形式。
我想的是什麼辦法叫像saveNewItem()
saveChangedItem()
removeItem()
方法,每一個表格繼承FormButtonBar
應該有。
但是,如何從FormButtonBar
打電話給他們?
例如:
private void buttonSearchRemove_Click(object sender, EventArgs e)
{
if (buttonSearchRemove.Tag == "search")
{
//call the search form here and wait for something to be returned
//the following 3 lines are the ones that switch text, icons and enabled/disabled on the buttons
utils.hablitarBotoes(panelBotoes, "abc");
utils.alternarBotoes(panelBotoes, "b");
buttonBuscarExcluir.Text = "Excluir";
}
else if (buttonSearchRemove.Tag == "remove")
{
DialogResult reply = MessageBox.Show("Are you sure you want to remove it?", "Are you sure?", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (reply == DialogResult.Yes)
{
//CALL REMOVE METHOD THAT SHOULD BE IN THE FORM INHERITING THIS ONE, BUT HOW?
removeItem();
}
utils.hablitarBotoes(panelBotoes, "nbf");
utils.alternarBotoes(panelBotoes, "");
buttonNovoSalvar.Text = "New";
buttonBuscarExcluir.Text = "Search";
buttonAlterarSalvar.Text = "Edit";
}
}
您應該聲明基類中的所有方法(您提到過)並覆蓋派生類中的這些方法。 –
但是如果我這樣做,我不會失去在基類中實現的用於切換文本和圖標的代碼,並最終不得不在實現的表單中重新實現它們? –