我有一个父控件(主窗体)和一个子控件(用户控件)。子控件有一些代码,它决定了应用程序可以执行哪些功能(例如保存文件,写入日志等)。我需要显示/隐藏,根据功能启用/禁用主窗体的主菜单项。因为我不能写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