对象间的协作与信息交换(下)
在对象间“广播”
- 特点:信息从一个对象发出,多个对象接收
方法1:
- 使用对象集合实现“消息广播”
- 主窗体中使用一个对象集合保存所有已创建从窗体的引用
- 当点击按钮时,遍历这个对象集合,逐个调用从窗体对象的公有方法显示信息
方法2:
- 利用委托实现“消息广播”
- C#支持一种称为“委托”的特性,一个委托变量包容一个方法引用列表,能“包容”多个方法,调用一次委托变量。所有方法顺序执行。
- 主窗体定义一个ReceiveMethods委托变量,在创建从窗体对象时,将从窗体的公有方法ShowCounter挂接到这个字段上
- 主窗体点击按钮时,只需调用一次ReceiveMethods,所有从窗体都能更新显示
方法3:
- C#可以很方便地自定义事件。
- 我们为主窗体定义一个MyClick事件,当点击按钮时,触发这个事件
- 从窗体的ShowCounter()方法响应这个事件,当事件触发时,刷新显示