2016-07-18 10 views
1

Например, у меня есть frmMenu, frmParent и frmChild.Включение или отключение таймера в одном из mdiChild

На моем frmChild У меня есть tmrChild.enabled = false. Я создаю экземпляр 10 frmChild, поэтому у меня есть 10 frmChild внутри моего frmParent. Обратите внимание, что каждый из frmChild имеет таймер с именем tmrChild внутри них, и все они enabled = false.

Имя каждого frmChild форме frmChild1, frmChild2, frmChild3 .... frmChild10

На мой frmMenu меня 10 buttons, каждый из которых соответствует enabled свойству каждого frmChild. Так,

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

То, что я хочу, когда я нажал button1 в моем frmMenu это позволило timer в моем frmChild1. Как мне это сделать?

Я попытался предназначаться имя frmChild, что-то вроде этого

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 

Это кажется, что я что-то легкое на этой части кода

objForms.tmrChild.enabled = True 

Как ссылаться на отсутствие a timer на этом?

+1

Вместо 'Dim objForms As Form' использовать' Dim objForms как frmChild'. Таким образом, вы можете получить доступ к переменным, объявленным как часть 'frmChild', в дополнение к объявленным как часть' Form'. – TnTinMn

ответ

1

Я хотел бы использовать для этого Dictionary. Вместо того, чтобы иметь отдельные поля для дочерних форм, просто введите одно поле для Dictionary(Of Button, fmrChild). Затем вы можете добавить каждую пару Button/form к Dictionary. Когда нажата кнопка Button, вы получаете соответствующую форму от Dictionary и выполняете по мере необходимости, например.

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 

Обратите внимание, что положение этого метода Handles включает все Buttons.

Вы бы, конечно, должны были написать этот метод StartTimer в своей дочерней форме и в нем позвонить Start на Timer.

 Смежные вопросы

  • Нет связанных вопросов^_^