2

我有Private Sub Modify()一个表单类A来处理按钮或标签的行为(两者都属于同一个 A类)。假设它这样做:

Private Sub Modify()
    btnFoo.Enabled = True
    lblBar.Text = "labelbar"
 End Sub

如果我将我Private Sub Modify()的表单类 A 移动到模块 B 并命名它,Public Sub Modify我所要做的就是改变同一个按钮或标签的行为是这样的:

Public Sub Modify()
    A.btnFoo.Enabled = True
    A.lblBar.Text = "labelbar"
End Sub

但是,考虑到模块是某种静态元素,这是否合适?我想知道正确的方式,所以我可以跟上良好的做法。

提前致谢。

4

2 回答 2

1

对于一个模块、类或其他任何东西来说,像这样深入访问另一个对象的属性几乎从来都不是一个好主意。如果不出意外,它违反了德墨忒耳法则。更一般地说,让表单之外的任何东西直接操作任何表单控件都不是一个好主意。我认为很遗憾控制是公开的,默认情况下,首先。最好将Modify方法留在表单上,Public​​如果您需要从表单外部调用它,只需创建它。

于 2013-01-22T20:34:40.073 回答
1

如果你沿着这条路走下去,你最终会得到很多模块,在很多表单中改变很多东西......如果你想用新功能扩展程序或修复错误,你会讨厌这种代码复杂性。

一个更好的规则是:在那个表单中做所有关于表单的事情。

为什么您实际上想将该代码提取到模块中?是不是因为你会在很多形式中做同样的事情?在这些情况下,提取这样的代码可能是有意义的,但不要让模块知道特定的形式。相反,你可以做

Public Sub Modify(button As Button, label As Label)
    button.Enabled True
    label.Text = "labelbar"
End Sub

并以多种形式调用它

Private Sub ChangeElements()
    Modify(btnFoo, lblBar)
End Sub

但同样,最好将这些东西留在表单中。

于 2013-01-22T20:36:28.070 回答