2013-06-21 39 views

回答

0

當您查看與每個控件關聯的事件時,您會注意到可以「下拉」表單中編碼的所有事件的列表。例如,如果雙擊「文本更改」事件,它將是controlname_textchanged(...)。然而,如果你有一個通用的處理程序,那麼你可以稱它爲textchangedevent(...)。通用事件處理程序需要在參數中包含與該事件關聯的發件人和事件對象。

如果您在用戶控件中執行此操作,並且必須更新主窗體,那麼您將通過public event eventobject youreventname進行冒泡,並在主窗體上綁定該事件。

0

像這樣的東西應該工作:

foreach (System.Windows.Forms.Control cont in this.Controls) 
      cont.Validating += new System.Windows.Forms.ValidationEventHandler(this.Control_Validating_Method) 

然後,你可以測試事件代碼控制類型,與原來的值進行比較的值。

1

了我的頭頂部,你可以做的形式加載事件添加事件這樣的事情...

foreach (var control in this.Controls) 
{ 
    if (control is Label) 
    { 
     ((Label)control).TextChanged += Controls_TextChanged; 
    } 
    else if (control is TextBox) 
    { 
     ((TextBox)control).TextChanged += Controls_TextChanged; 
    } 
} 
0

是的,你可以很容易地控件添加到同一事件。這個例子把'Labels'和'Textboxes'放在同一個事件中。

private void Form1_Load(object sender, EventArgs e) 
    { 
foreach (Control x in this.Controls) 
      { 
       if(x is Label) 
        ((Label)x).MouseHover+=new EventHandler(AllLabels_HoverEvent); 
        else if(x is TextBox) 
        ((TextBox)x).MouseHover+=new EventHandler(AllTextboxes_HoverEvent); 
      } 
} 

void AllLabels_HoverEvent(object sender, EventArgs e) 
     { 
       Label label = (Label)sender; 
      // label.dowhateveryouwant... 
     } 
     void AllTextboxes_HoverEvent(object sender, EventArgs e) 
     { 
      Textbox textbox = (Textbox)sender; 
      // textbox.dowhateveryouwant... 
     } 

如果您需要任何更多的澄清,請評論下面,我將添加到我的回答或修改它適合你有什麼特別的需求。但要小心,如果您將控件嵌套在其他容器中,它們將不在this.Controls中。

相關問題