1

我正在寻找从 form_Load 事件处理程序调用预先存在的事件处理程序子例程。但以下不起作用,因为控制不会回来,我想做更多。

更新:
我是新手,所以我不知道正确的协议是什么,但是......不返回的原因是像下面这样的语句结束了子例程的执行。

If aLabel.Tag = 1...

修复是添加New到声明中以创建它的一个实例,即..更改....
Dim aLabel As Label
... to ...
Dim aLabel As New Label

我很惊讶我没有收到警告,但他们只是突然停止执行 sub。那不是很有帮助:)
再次感谢你们的时间......
(也许这个问题应该被删除,因为它已经达到了它的目的)
@konrad @karl

更新结束

没用的是....

Private Sub Form1_Load...

button1_Click(sender, e)    'But Control doesn't come back.

end sub

我要改成sender什么吗?
提前感谢
戴夫

4

1 回答 1

2

像这样调用事件处理程序是一个坏主意,因为您试图通过制作sender和/或EventArgs成为其他东西来模拟事件上下文。

相反,将您要调用的逻辑放入SubroutineorFunction并让您的Form1_Load方法调用它;同样,如果您确实有一个真正的单击事件处理程序,那么该处理程序代码也可以调用该方法,如下所示:

Private Sub Form1_Load()
    DoSomeWork()
End Sub

Protected Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
    DoSomeWork()
End Sub

Private Sub DoSomeWork()
    ' Put logic here that you want to do from form load and a button click
End Sub

这样做的好处是使代码更简洁、更清晰和更易于维护,因为如果您需要更改逻辑,您只需在一个地方更改逻辑。

注意:显然,DoSomeWork如果需要,您可以将参数传递给方法,并在需要时将其更改为 aFunction以返回某些内容。

于 2013-09-11T13:49:37.047 回答