这个模块还包含 UpdateControlsOnAllForms 过程,它执行更新。代替上一个方法中使用的一个应用程序级变量,我现在使用主窗体的概念。因此我可以将那个窗体的值拷贝到集合中的所有其它窗体。UpdateControlsOnAllForms 其实就是一组简单的 For……Nexts 循环遍历某个窗体的所有控件,找到需要更新的控体,并更新它们。 为了在我的窗体中实现这一功能,我在窗体的 Load 事件中加入了这一行代码: AddFormToUpdate(Me) 另外一种可选的方法,我可以将它添加到构造函数。这一行代码将把当前窗体实例添加到集合进行更新。 现在让我们考察单个事件过程:
Private Sub txt_Leave(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles txtAddress.Leave, _ txtCustomer.Leave, txtName.Leave UpdateControlsOnAllForms(Me) End Sub
这段代码将我想要同步的所有三个控件 (txtAddress、txtCustomer 和 txtName)的 Leave 事件捆绑到一个事件句柄上。这时我可以添加一行代码 来调用 UpdateControlsOnAllForms.Me 被传递到该过程调用,从而导致其它窗体与该窗体同步。 现在我有三个版本的代码,它们都可以同步窗体中控件,因此我可以进行选择。我可能已经使用了自定义事件,在 DataClass 中定义某个事件并让每个窗体都预订它。 然后当这个事件触发时,这些窗体可以从每个事件句柄中获取新的数据并设置适当的控件。但是这样做所需的代码量一点也不会比第一种方法中将控件绑定到类来得少。我可以构建单个实现更新的过程,并将该过程放到某个模块中。我需要向该过程传递窗体实例来实现更新。我可以用类中的某个事件句柄触发这个过程。此过程看起来就像这样:
Sub UpdateControls(ByVal ThisForm As frmBase) With ThisForm .txtNextData.Text = localNextData End With End Sub
上一页 [1] [2]