C#中动态订阅控件中任意事件的方法
2010-09-30 22:42:48 来源:WEB开发网核心提示:这个题目想了半天,不太好用一句话描述,C#中动态订阅控件中任意事件的方法,这样,举个简单的应用场景:在用Windows Forms制作向导程序的时候,如何让我们的框架能够支持任意的控件,并在任意控件的任意事件发生时,通常会有“上一步”、“下一步”这样的按钮,假设现在需要做
这个题目想了半天,不太好用一句话描述。这样,举个简单的应用场景:在用Windows Forms制作向导程序的时候,通常会有“上一步”、“下一步”这样的按钮。假设现在需要做一个通用的“向导制作框架”,那么我们就需要在这个“向导制作框架”中,对“上一步”、“下一步”这些按钮是否可用(是否Enabled)进行控制。而控制条件是由开发人员在实际使用“向导制作框架”进行开发时确定的。比如:只有在当前向导页面的某个文本框里被输入了字符串以后,“下一步”才可用;或者只有在某个按钮被按下的时候,“下一步”才可用。于是,我们的 “向导制作框架”要能够允许开发人员来确定,当触发什么事情的时候,“下一步”才可用。
我们先从特例入手,假设向导页面上只有一个按钮叫btn,只有点击btn以后,“下一步”才能够被点击。编程上很容易实现这个效果:直接在窗体上订阅btn的Click事件,在Click事件里,写下“btnNext.Enabled = true;"这样一句话。
现在问题来了:我们需要为开发人员提供一个“向导制作框架”,也就是说,这个框架根本无法预测开发人员需要订阅哪些控件的哪些事件,只能留出一个接口,让开发人员自己调用这个接口实现事件的动态注册。Windows Forms提供的控件类型多种多样,而且不同的事件有着不同的函数签名(也就是委托,比如Click事件和MouseDown事件就是用的两个不同的委托),如何让我们的框架能够支持任意的控件,并在任意控件的任意事件发生时,调用“btnNext.Enabled = true;”这条语句,使得“下一步”按钮可用呢?
更多精彩
赞助商链接