[C#]Winform中检测多个文本框的输入事件

Winform中TextBox文本框的TextChange事件可以检测到一个TextBox的文本内容改变,但是如何同时对多个文本框进行输入检测有些麻烦。

现在有这么一个需求,要让用户填写一个信息表,填写完成后保存。用户在打开已经保存过的信息表时可能会修改信息表,要判断是否对这个信息表进行了修改。如果修改则更新这个信息表的内容,否则不允许使用保存,因为保存会因为重复数据出现错误。

考虑到一个panel中有几十个TextBox,不可能为每一个TextBox重写一个TextChange事件。

在网上找到相关办法大致有两个,一是重写TextBox类,为新写的TextBox设置TextChange方法。还有一种方法是使用winform原生的TextBox,将所有TextBox的TextChange事件绑定到一个函数。

这里尝试使用第二种方法,因为比较简单= =

TextChange模板为

gengral_Text_Changed(object sender, EventArgs e)

sender为此次操作的对象。使用

sender.Equals(this.Winform.Object)

可判断当前操作的控件对象

private void general_Text_Changed(object sender, EventArgs e){
    if(sender.Equals(this.TextBox1){
        do pro1
    }
    else if(sender.Equals(this.TextBox2){
        do pro2
    }
}

另外,如果对textbox的操作基本一致,比如只是过滤掉非数字的输入,并重新让用户输入,可以这么简化代码:

        private void Only_Num_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((e.KeyChar >= '0' && e.KeyChar <= '9') || e.KeyChar == '\b')
                e.Handled = false;
            else
                e.Handled = true;

            ((TextBox)sender).Focus();

        }

发布者

VC-Robot

游戏爱好者,动漫迷,C++修炼中,编程菜鸟,随性

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据