我正在使用以下代码来调用对话框。
Using frmSomeForm As New SomeForm()
frmSomeForm.intSomeVariable = 6
frmSomeForm.ShowDialog()
End Using
在SomeForm()
内部发生MyBase.Load
事件。在这种特殊情况下:
Private Sub SomeForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
If intSomeVariable <> 0 Then SomeOtherSub()
End Sub
我的问题是加载事件何时触发?它是在调用.ShowDialog()
时触发还是在Using
行时触发。
答案 0 :(得分:2)
Load
事件仅在您即将显示表单时致电Show()
或ShowDialog()
时提出。目前frmSomeForm.intSomeVariable = 6
行将始终在Load
事件之前触发。
回复您的评论 "Would a Property also work in this case?"
:
请注意,在 Show()
或ShowDialog()
来电之前所提出的任何代码都将首先执行,即使这是一个非常耗时的代码。代码是逐行同步执行的。
例如,这个:
TimeConsumingMethod()
frmSomeForm.ShowDialog()
只有在frmSomeForm.ShowDialog()
成功完成 之后才会致电TimeConsumingMethod()
,即使这需要永远。