我有一個父控件(主窗體)和一個子控件(用戶控件)。子控件有一些代碼,它決定了應用程序可以執行哪些功能(例如保存文件,寫入日誌等)。我需要顯示/隱藏,根據功能啓用/禁用主窗體的主菜單項。因爲我不能寫MainMenu.MenuItem1.Visible = false;
(主菜單在子控件中不可見),所以我在子控件中觸發一個事件並在主窗體上處理這個事件。問題是我需要傳遞哪些菜單元素需要顯示/隱藏。要做到這一點,我創建了一個枚舉,展示了與從子控件訪問父控件元素的最佳方式是什麼?
public enum ItemMode
{
TRUE, FALSE, NONE
}
然後我創造了我的EventArgs具有ItemMode
類型的6個參數的項目做(有我需要管理6菜單項)。所以,任何時候,我需要顯示的第一個項目,隱藏第二,什麼也不做,其餘的我必須寫這樣的事情
e = new ItemModeEventArgs(ItemMode.TRUE, ItemMode.FALSE, ItemMode.NONE, ItemMode.NONE, ItemMode.NONE, ItemMode.NONE);
FireMyEvent(e);
這似乎是太多的代碼給我,更重要的是,如果我需要什麼今後要管理10個項目?然後,我將不得不重寫所有構造函數,以添加4個NONE。
我相信有這樣做的更好的辦法,但我只是無法弄清楚它是什麼。
+1對於一個有趣的問題,用代碼給出足夠的細節來了解當前的處理方式 – shelleybutterfly