2014-09-29 50 views
3

我有一個UserControl有一些其它控件:如何處理單擊子控件時控件上的Click事件?

enter image description here

我需要啓用點擊我點擊用戶控制的,所以我可以設置用戶控件的邊框樣式的任何項目。

這工作,如果我沒有任何控制添加,但如果我有例如面板,我嘗試點擊面板我UserControl的點擊事件不會被解僱。

這是我的代碼:

public partial class TestControl : UserControl 
{ 

    public TestControl() 
    { 
     InitializeComponent(); 
     this.Click += Item_Click; 
     IsSelected = false; 
    } 

    public bool IsSelected { get; set; } 

    void Item_Click(object sender, EventArgs e) 
    { 
     if (!IsSelected) 
     { 
      IsSelected = true; 
      this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 
     } 
     else 
     { 
      IsSelected = false; 
      this.BorderStyle = System.Windows.Forms.BorderStyle.None; 
     }     
    } 
} 

如何解僱我的用戶點擊的事件任何線索,即使我點擊了其他元素?

+0

您必須設置再次點擊面板的Click事件 – 2014-09-29 17:32:53

+0

因此無法捕捉到UserControl上的點擊? – VAAA 2014-09-29 17:48:54

+0

您可以在控件的構造函數中傳遞*要處理這些click *的所有控件,並處理所有單擊事件。這對你的目標來說非常簡單 – 2014-09-29 17:51:09

回答

1

其實這是非常簡單的實現這一點,您可以遍歷包含在你的用戶控件的所有控件並註冊Item_Click自己的事件處理程序將調用它時,點擊觸發事件:

public partial class TestControl : UserControl { 
    public TestControl() { 
     //... 

     for (int i = 0; i < Controls.Count; i++) { 
      Controls[ i ].Click += Item_Click; 
     } 
    } 

    //... 
} 
相關問題