2014-03-07 73 views
2

嘿和另一個奇怪的問題,對不起......一個按鈕來控制許多用戶的另一個按鈕控制

我有25個UserControl s的他們每個人的Start_Button - 這Start_Button可以是Visible與否取決於UserControl是否處於活動狀態。在我的form1我有一個Start_All按鈕。

我想模擬點擊所有UserControlStart_Buttons這些只能看到。

+0

你有什麼嘗試過嗎? R' – equisde

+0

Winforms或webforms?通常,不是模擬點擊事件,而是爲啓動功能公開一個方法,並從「Start_Button.Click」事件中調用此方法。然後你可以從你想要的地方調用這個方法,你的代碼保持可讀性和可重用性。 –

+0

我已經嘗試製作所有用戶控件的列表。製作一個布爾變量是否可見。然後嘗試以某種方式使用if語句的for循環到'.performclick()',如果每個usercontrol的值是可見的......但我無法得到這個工作xD @equisde –

回答

3

不是模擬點擊事件,而是顯示啓動功能的方法,並從Start_Button.Click-事件中調用此方法。那麼你可以從任何你想要的地方使用這種方法。在這種方式下,您的代碼保持可讀性和可重用性。

您還應該在您的UserControl中提供Active屬性,您只需鏈接到您的開始按鈕的Visible屬性即可。

假定該用戶控件是在容器中控制等Panel

Public Sub StartAll() 
    Dim allActiveUserControls = 
     From uc In controlPanel.Controls.OfType(Of MyUserControlType)() 
     Where uc.Active 
    For Each uc In allActiveUserControls 
     uc.Start() 
    Next 
End Sub 

下面是Active屬性的示例:

Public Property Active As Boolean 
    Get 
     Return StartButton.Visible 
    End Get 
    Set(value As Boolean) 
     StartButton.Visible = value 
    End Set 
End Property 

和這裏的Start方法和事件處理程序:

Public Sub Start() 
    ' Do Something ... ' 
End Sub 

Private Sub StartButton_Click(sender As System.Object, e As System.EventArgs) Handles StartButton.Click 
    Start() 
End Sub 

Private Sub Start_All_Click(sender As System.Object, e As System.EventArgs) Handles Start_All.Click 
    StartAll() 
End Sub 
+0

感謝您的迴應。我正在努力掌握這個解決方案:3 –

+0

@AmatureCoder:你究竟知道些什麼? 'MyUserControlType'是你的'UserControl'類型(用正確的類型替換它)。以'From uc in controlPanel'開頭的片段是一個LINQ查詢。 –

+0

基本上把你的StartButtons做的事情放入Start Sub .... – Mych