C#委托在多窗体中的简单应用
C#委托在多窗体中的简单应用
难点
主窗体产生窗体1和窗体2,两个独立窗体,实现功能为:窗体1操作窗体2中的数据
分析:由于窗体1和窗体2为主窗体创建,故它们无法互相访问,可以使用委托代理。
- 需要窗体2中的数据,而只有主窗体能访问窗体2,故主窗体中定义操作窗体2的函数
如:返回值类型 函数名(参数){具体操作方法} - 在窗体1中定义委托,直接调用该函数进行数据操作
如:public delegate 返回值类型 委托函数类型名 (参数);public 委托函数类型 委托函数名;
注意:前面定义的是类型,后面需要用该类型定义委托函数,定义委托函数无需返回值和参数以及函数体 - 通过主函数调用窗体1的委托函数注册主函数中的方法
完成
图示:
这样,在窗体1中的需要地方就可以调用changeNameDel方法来改变窗体2中的name了。
扩展
我们都知道,窗体1中若产生窗体2,则2中public属性变量可以在1中修改,反之,在2中无法修改1窗体的内容。
为了解除这个限制,可以使用委托或者事件。
在2中定义委托或事件,在1中注册该事件到一个函数。此时2窗体调用该委托或者事件即可改变1窗体的内容。