如何在C#winforms中为表单上的多个文本框控件调用Text_Changed事件

Eva*_*ark 3 c# winforms

我的表单有大约20个文本框控件,我想激发Text_Changed事件,而不是为每个单独的文本框添加事件.有没有办法循环文本框来触发此事件?我想要做的是在文本更改时清除标签控件.我没有显示消息框,而是使用标签控件来显示消息.我还设置了如果文本框包含无效数据的地方,我选择所有文本并将焦点放在该文本框中,这样当用户重新输入信息时,标签控件就会清除消息.

编辑:

为了解决一些困惑,这里是我的验证方法中的一些代码

if (txtBentLeadsQty.Text == "")
{
    //ValidData = true;
    BentLeadsCount = 0;
}
else 
{
    if (int.TryParse(txtBentLeadsQty.Text.Trim(), out BentLeadsCount))
        ValidData = true;
    else
    {
        ValidData = false;
        lblError.Text = "Bent Lead Qty must be a numeric value";
        txtBentLeadsQty.SelectAll();
        txtBentLeadsQty.Focus();
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经有办法检查数值,并且我输入代码来选择输入的所有文本,如果值不是数字则给予焦点,我只想在文本更改时清除标签控件如果用户点击退格键或开始输入错误发生的原因,我会突出显示该文本框中的所有文本(如果它无效).如果我在每个文本框TextChanged事件中放置代码,我可以这样做,但是为了保存编码,我想知道是否有办法清除标签控件,如果任何文本框从我的验证方法抛出错误而不是添加单个事件20个文本框.注意:并非所有文本框都会输入数据,这些是我放入代码的数量文本框,如果文本框为null,则为变量赋值0.

use*_*830 8

您可以使用以下代码:

private void Form1_Load(object sender, EventArgs e)
{
    foreach (Control ctrl in this.Controls)
    {
        if ((ctrl as TextBox) != null)
        {
            (ctrl as TextBox).TextChanged += Form1_TextChanged;
        }
    }
}
private void Form1_TextChanged(object sender, EventArgs e)
{
    MessageBox.Show((sender as TextBox).Name);
}
Run Code Online (Sandbox Code Playgroud)