我正在寻找从form_Load事件处理程序调用预先存在的事件处理程序子例程。 但是下面没有用,因为控制没有回来,我想做更多。
更新
我是新手,所以我不知道合适的协议是什么,但......
不返回的原因是像下面这样的语句结束了子程序的执行。
If aLabel.Tag = 1...
修复是在声明中添加New
来创建它的实例,即..
改变....
Dim aLabel As Label
......到......
Dim aLabel As New Label
我很惊讶我没有得到警告,但他们突然停止执行潜艇。那不是很有帮助:) 再次感谢您的时间... ... (也许这个问题应该被删除,因为它已经达到了目的) @konrad @karl
END OF UPDATE
什么行不通......
Private Sub Form1_Load...
button1_Click(sender, e) 'But Control doesn't come back.
end sub
我是否将sender
改为某事?
提前谢谢你
戴夫
答案 0 :(得分:2)
调用这样的事件处理程序是个坏主意,因为您试图通过使sender
和/或EventArgs
成为其他事件来模拟事件上下文。
相反,将要调用的逻辑放入Subroutine
或Function
并调用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
方法,如果需要返回某些内容,可以将其更改为Function
。