2016-07-27 3 views
0

Ich arbeite mit dem folgenden Bit Code, um einen Dialog aufzurufen.Wann wird das Ereignis "MyBase.Load" ausgelöst?

Using frmSomeForm As New SomeForm() 
    frmSomeForm.intSomeVariable = 6 
    frmSomeForm.ShowDialog() 
End Using 

Innerhalb dieser SomeForm() ist ein MyBase.Load Ereignis. In diesem speziellen Fall:

Private Sub SomeForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    If intSomeVariable <> 0 Then SomeOtherSub() 
End Sub 

Meine Frage ist wann wird das Ladungsereignis ausgelöst? Feuert es in dem Moment, in dem die .ShowDialog() aufgerufen wird oder im Moment der Using Linie ausgelöst wird.

+2

[Form.Load-Ereignis] (https://msdn.microsoft.com/en-us/library/system.windows.forms.form.load (v = vs.110) .aspx): 'tritt vor einem auf Das Formular wird zum ersten Mal angezeigt. Sie können "intSomeVariable" als Ctor-Parameter übergeben, wenn dieser Wert erforderlich sein muss. – Plutonix

+0

Verstanden. Würde eine Immobilie auch in diesem Fall funktionieren? –

+1

Funktionieren Sie nicht? – Plutonix

Antwort

2

Das Ereignis Load wird nur ausgelöst, wenn Sie Show() oder ShowDialog() aufrufen, wenn das Formular angezeigt wird. Zur Zeit wird Ihre frmSomeForm.intSomeVariable = 6 Linie immer Feuer vor dem Load Ereignis.

Beantworten Sie Ihren Kommentar "Would a Property also work in this case?":

Beachten Sie, dass jeder Code, den Sie vor Ihre Show() oder ShowDialog() Anruf gesetzt wird zuerst ausgeführt werden, auch wenn es eine Zeit ist, ein raubend. Der Code wird synchron Zeile für Zeile ausgeführt.

Zum Beispiel diese:

TimeConsumingMethod() 
frmSomeForm.ShowDialog() 

nennen würde nur frmSomeForm.ShowDialog()nach die TimeConsumingMethod() erfolgreich abgeschlossen ist, auch wenn das für immer dauert.