遍历窗口所有TextBox后,给每个TextBox加一个事件,如何做?
比如,我想一次遍历所有的TextBox,然后给每个TextBox都加上一个Enter事件,因为TextBox的Enter所有事件都是相同的,我不想逐个去写Enter事件,一次性全部写入,如何做?谢谢!

解决方案 »

  1.   

    void findtop()
    {
    foreach (Control c in this.Controls)
    {
        if (c.Controls.Count > 0) findsub(c);
        if (typeof(c) == TextBox.GetType()) c.Enter += xxxx;
    }
    }void findsub(Control c)
    {
    foreach (Control c1 in c.Controls)
    {
        if (c.Controls.Count > 0) findsub(c1);
        if (typeof(c1) == TextBox.GetType()) c1.Enter += xxxx;
    }
    }
      

  2.   


    foreach(Control ctl in this.Controls)
                {
                    TextBox txt = ctl as TextBox;
                    if (txt != null)
                    {
                        txt.Enter+=new EventHandler(txt_Enter);
                    }
                }
      

  3.   

    foreach(Control c in this.Controls)
                {
                    
                    if (c is TextBox )
                    {
                        txt.Enter+=new EventHandler(txt_Enter);
                    }
                }
      

  4.   

    foreach(Control ctl in this.Controls)
                {
                    if(c is TextBox)
                    {
                    TextBox txt = c as TextBox;
                     if (txt != null)
                      {
                        txt.Enter += new System.EventHandler(this.textBox1_Enter);
                      }
                    }
                }
    private void textBox_Enter(object sender, EventArgs e)
            {
                TextBox txt = sender as TextBox;        }
      

  5.   

    我的事件是想让当前的TextBox背景颜色改变
    比如TextBox1的Enter事件是,让TextBox1的背景颜色变成红色;如果按照上面的方法,当TextBox1的Enter触发时,所有的TextBox控件全部变成红色了。这个要如何办。
      

  6.   

    sender里面判断,是哪个textbox发送来的。另外,貌似除了我的代码,别的代码都只能寻找一层。如果你有textbox放入了groupbox、panel或者容器里面,就找不到了。
      

  7.   

    搞定,突然想到了,装箱操作!
    private void myTextBox_Enter(object sender, EventArgs e)
            {
                TextBox txt = (TextBox)sender;            
                txt.BackColor = System.Drawing.Color.Red;
            }
            protected void TextBoxEventControl()
            {
                foreach (Control ctrl in groupBox1.Controls)
                {
                    TextBox txt = ctrl as TextBox;
                    if (txt != null)
                    {
                        txt.Enter += new EventHandler(myTextBox_Enter);
                    }               
                }
            }
      

  8.   

    foreach(Control ctl in this.Controls)
                {
                    TextBox txt = ctl as TextBox;
                    if (txt != null)
                    {
                        txt.Enter+=new EventHandler(txt_Enter);
                    }
                }
      

  9.   

    javascrip 交流群:97470659
    asp.net 交流群:106041515
    java 交流群: 106041212  
    sql server 交流群:33968565欢迎大家加入讨论