从子控件访问父控件的元素的最佳方法是什么?
作者:互联网
我有一个父控件(主窗体)和一个子控件(用户控件).子控件具有一些代码,这些代码确定应用程序可以执行哪些功能(例如,保存文件,写入日志等).我需要根据功能显示/隐藏,启用/禁用主窗体的主菜单项.因为我不能只写MainMenu.MenuItem1.Visible = false; (从子控件看不到主菜单),我在子控件中触发一个事件并在主窗体上处理此事件.问题是我需要通过菜单中哪些元素需要显示/隐藏.为此,我创建了一个枚举,显示了如何处理该项目
public enum ItemMode
{
TRUE, FALSE, NONE
}
然后,我创建了具有6个ItemMode类型参数的eventargs(我需要管理6个菜单项).所以任何时候我需要显示第一个项目,隐藏第二个项目,而对其余的项目什么都不做,我必须写这样的东西
e = new ItemModeEventArgs(ItemMode.TRUE, ItemMode.FALSE, ItemMode.NONE, ItemMode.NONE, ItemMode.NONE, ItemMode.NONE);
FireMyEvent(e);
对我来说,这似乎是太多代码,而且,如果将来我需要管理10个项目,该怎么办?然后,我将不得不重写所有构造函数,以添加另外4个NONE.
我相信有一个更好的方法可以做到这一点,但我只是想不通它是什么.
解决方法:
您可以创建一个采用ItemMode []或List< ItemMode>或Dictionary< string,ItemMode>对于这些项目(而不是当前的6个参数)-这样,您在添加更多项目时就无需进行太多更改…
标签:user-controls,c,winforms 来源: https://codeday.me/bug/20191208/2088466.html