2016-07-18 5 views
1

Zum Beispiel habe ich frmMenu, frmParent und frmChild.Aktivieren oder Deaktivieren des Timers in einem der mdiChild

Auf meiner frmChild habe ich tmrChild.enabled = false. Ich instanziiere 10 frmChild, so habe ich 10 frmChild innerhalb meiner frmParent. Beachten Sie, dass jeder der frmChild einen Timer mit dem Namen tmrChild innerhalb von ihnen hat und sie sind alle enabled = false.

Der Name jedes frmChild Form ist frmChild1, frmChild2, frmChild3 .... frmChild10

Auf meinem frmMenu Ich habe 10 buttons, jeder von ihnen entspricht dem enabled Eigenschaft jedes frmChild. So

10 buttons on my frmMenu = 10 timer in each of my frmChild

Was ich will, ist, wenn ich die button1 in meinem frmMenu geklickt wird es aktiviert die timer in meinem frmChild1. Wie mache ich das?

Ich habe versucht, den Namen frmChild, so etwas wie dieses

Private Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click 
     Dim objForms As Form 
     For Each objForms In frmParent.MdiChildren 
      If objForms.Text = "frmChild1" Then 
       objForms.tmr1.enabled = True 
      End If 
     Next 
End Sub 

Es scheint Ziel, dass ich etwas einfach, auf diesem Teil des Codes fehlt bin

objForms.tmrChild.enabled = True 

Wie ich verweisen kann a timer auf das?

+1

Anstelle von 'Dim objForms As Form' verwenden Sie' Dim objForms As frmChild'. Auf diese Weise können Sie auf die Variablen zugreifen, die als Teil von 'frmChild' deklariert sind, zusätzlich zu denen, die als Teil von 'Form' deklariert sind. – TnTinMn

Antwort

1

Ich würde dazu neigen, eine Dictionary dafür zu verwenden. Anstatt separate Felder für die untergeordneten Formulare zu haben, müssen Sie nur ein Feld für eine Dictionary(Of Button, fmrChild) haben. Sie können dann jedes Button/Formularpaar zu Dictionary hinzufügen. Wenn ein Button geklickt wird, erhalten Sie das entsprechende Formular aus dem Dictionary und tun, wie erforderlich, z.

Private childFormsByButton As New Dictionary(Of Button, frmChild) 

Private Sub Buttons_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click 
    Dim btn = DirectCast(sender, Button) 
    Dim frm = childFormsByButton(btn) 

    frm.StartTimer() 
End Sub 

Beachten Sie, dass die Handles Klausel dieser Methode, um alle Buttons enthält.

Sie müssten natürlich diese StartTimer Methode in Ihrem Kindformular schreiben und darin Start auf dem Timer anrufen.

Verwandte Themen