在《VB.NET学习笔记:窗体显示及互相传值》一文中,通过默认的窗体实例、保持窗体引用的全局性或在窗体构造函数中把窗体指针作为参数传递,这些方法都是直接操作窗体中的任何控件来读取和改变窗体内的信息。这样会在窗体间大量互相引用各自的成员,造成了彼此之间存在着很大的耦合性,非常不利于窗体模块间的独立,破坏了类型封装性的原则。在.NET下,还为我们提供了另外一种强大的机制来实现窗体通信,这就是委托。
属性与委托实现窗体间相互传值
新一个Windows窗体应用程序,包含MainFrm和ChildFrm共2个窗体,还有一个Middle模块,在这两个窗体里均拖入一个文本框TextBox控件和一个Button控件。
MainFrm窗体代码:
Public Class MainFrm
Private f As New ChildFrm
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
f.ReceiveOrSendMessage = TextBox1.Text
End Sub
Private Sub MainFrm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
f.action = Sub(msg)
TextBox1.Text = msg
End Sub
f.Show()
End Sub
End Class
ChildFrm窗体代码:</