什么时候活动' MyBase.Load'火?

时间:2016-07-27 17:14:41

标签: vb.net winforms

我正在使用以下代码来调用对话框。

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行时触发。

1 个答案:

答案 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() ,即使这需要永远。