日期:2014-05-18  浏览次数:21121 次

C#中多个TextBox共同事件怎么写
想要容器groupBox内所有的文本框可以实现以下两个事件。事件内该怎么写呢?
注册事件时的代码有问题吗?
注:文本框的命名没有规则。比如第一个文本框名为txtBox1,可能第二个文本框名为txt2。


C# code

        public Form1()
        {
            InitializeComponent();
            SetEvents();
        }

        /// <summary>
        /// 注册事件
        /// </summary>
        void SetEvents()
        {
            foreach (Control ctl in this.groupBox.Controls)
            {
                if (ctl is TextBox)
                {
                    TextBox txtBox = ctl as TextBox;
                    txtBox.Click += new System.EventHandler(txtBox_Click);
                    txtBox.TextChanged += new EventHandler(txtBox_TextChanged);
                }
            }
        }

        private void txtBox_Click(object sender, EventArgs e)
        {
            //选中当前文本框所有文本
            //类似实现if(txtBox1.Focus())
            //               txtBox1.SelectAll();
        }

        private void txtBox_TextChanged(object sender, EventArgs e)
        {
            //文本框内文本改变触发事件
        }



------解决方案--------------------
注册事件时的代码没有问题。
至于各个事件里面的代码怎么写,还是一样的,用遍历来实现。
------解决方案--------------------
可以啊 你把所有的 textbox都绑定 txtBox_Click 事件 不就行了吗
------解决方案--------------------
C# code

Textbox textbox1 = (Textbox)sender;
switch(textbox1.name){
case "textbox1":{

}
}

------解决方案--------------------
查看sender参数
------解决方案--------------------
没问题。事件里面用sender获取执行的控件,如
TextBox txtBox = sender as TextBox;
if(txtBox.Focus())
txtBox.SelectAll();