1. 程式人生 > >C#為控制元件動態新增事件繫結的時機

C#為控制元件動態新增事件繫結的時機

今天遇到個小問題,要為幾十個文字框新增相同的失去焦點事件,常規的辦法是在VS的事件管理器裡面新增,但那樣太繁瑣了,幾十個文字框,要加幾十遍,這行不通。

於是想到動態繫結,第一次嘗試如下:

foreach(TextBox tbx in tbxs){
      tbx.Leave += new EventHandler(tbxN_Leave);
}

public void tbxN_Leave(object sender, EventArgs e)
{
    MessageBox.Show("Leave");
}

但是沒有效果。怎麼回事呢?網上都是這麼寫的啊...

再查,是不是繫結語句的位置問題?仔細看了看,我把繫結的語句寫在了FormMain_Load方法中,於是換個思路,把繫結語句寫到構造方法中:

public FormMain()
{
     InitializeComponent();

     //...
     //繫結隨時儲存倒計時資訊的事件
     foreach (TextBox tbx in tbxs)
     {
         tbx.Leave += new EventHandler(tbxN_Leave);
     }
}
繫結成功,問題解決!