2016-07-27 163 views
0

我正在使用以下代碼來調用對話框。活動「MyBase.Load」何時啓動?

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行的時刻被觸發時,它會被觸發嗎?

+2

[Form.Load事件(https://msdn.microsoft.com/en-us/library/system.windows.forms.form.load(V = vs.110)的.aspx):'之前發生表單是第一次顯示的。如果需要它具有該值,您可能想要將intSomeVariable作爲ctor參數傳遞。 – Plutonix

+0

明白了。在這種情況下,物業也會起作用嗎? –

+1

你有沒有工作? – Plutonix

回答

2

Load事件僅在您要在顯示錶單時調用Show()ShowDialog()時纔會引發。目前您的frmSomeForm.intSomeVariable = 6會把Load事件之前總是火災。

回答您的評論"Would a Property also work in this case?"

請記住,你把你的Show()ShowDialog()呼叫之前任何代碼都將首先執行,即使它是一個耗費時間。代碼是一行一行地同步執行的。

例如,這樣的:

TimeConsumingMethod() 
frmSomeForm.ShowDialog() 

只會叫frmSomeForm.ShowDialog()TimeConsumingMethod()已成功完成,即使這需要永遠。