2011-09-28 39 views
0

我希望得到一些幫助。獲取控件上執行的事件

在我的應用程序中,我有一個文本框,它應該在點擊任何控件時顯示發生的事件。

例如,如果我點擊應用程序中的按鈕或複選框,文本框應該標識事件並顯示爲button1.clicked,checkbox1.checked類型的東西。

任何人都可以幫助我完成這件事。

在此先感謝。:)

+1

到目前爲止,你已經嘗試過什麼? –

+0

它是在WPF/WinForms下? – sll

+1

它是在WinForm下。 – Udhay

回答

1

如果你想這樣做的所有控件動態,你可以通過控制樹導航和訂閱事件相同的事件處理程序像圖所示,在基本設置預先定義的控制的情況下,只需訂閱所有這些處理程序即可。

預定義的控件設置

checkBox1.CheckedChanged += (s, e) => { /* handles Checked state changes*/ }; 
button1.Click += (s, e) => { /* handles button click */ }; 

動態

private void InitializeHooks() 
{ 
    foreach(var control in this.Controls) 
    { 
     var button = control as Button; 
     if (button != null) 
     { 
      button.Click += OnClick; 
      continue; 
     } 

     var checkBox = control as CheckBox; 
     if (checkBox != null) 
     { 
      checkBox.CheckedChanged += OnCheckedChanged; 
     }  
    } 
} 

// Button click handler 
private void OnClick(object sender, EventArgs eventArgs) 
{ 
    txtOutput.Text = String.Format(
           CultureInfo.CurrentCulture, 
           "{Control Type: {0}, Name: {1}, Event: Click", 
           sender.GetType().Name, 
           sender.Id); 
} 

// Checkbox Checked state changed handler 
private void OnCheckedChanged(object sender, EventArgs eventArgs) 
{ 
    txtOutput.Text = String.Format(
           CultureInfo.CurrentCulture, 
           "{Control Type: {0}, Name: {1}, Event: CheckedChanged", 
           sender.GetType().Name, 
           sender.Id); 

} 
相關問題