C# 检测所有文本框值的更改

C# 检测所有文本框值的更改,c#,windows,winforms,C#,Windows,Winforms,我有一个有很多文本框的表单,我有一个函数,我想在任何文本框中的值被更改时运行它。有没有一种方法可以在不复制每个文本框的代码的情况下对每个文本框执行相同的操作?以下是适用于一个人的代码: private void Team1Q2_TextChanged(object sender, EventArgs e) { int parsedValue; if (!int.TryParse(Team1Q1.Text, out parsedValue)) { Team1

我有一个有很多文本框的表单,我有一个函数,我想在任何文本框中的值被更改时运行它。有没有一种方法可以在不复制每个文本框的代码的情况下对每个文本框执行相同的操作?以下是适用于一个人的代码:

private void Team1Q2_TextChanged(object sender, EventArgs e)
{
    int parsedValue;
    if (!int.TryParse(Team1Q1.Text, out parsedValue))
    {
        Team1Q1.Text = "0";
        return;
    }
    else
    {
        CalculateTotals();
    }
}

为所有
文本框
注册此事件处理程序,并强制转换
发送者
对象以使用事件引发者文本框

代码:

private void Team1Q2_TextChanged(object sender, EventArgs e)
{
    TextBox senderTextBox = sender as TextBox;
    int parsedValue;
    if (!int.TryParse(senderTextBox.Text, out parsedValue))
    {
        senderTextBox.Text = "0";
        return;
    }

    else
    {
        CalculateTotals();
    }
}
txtbox1.TextChanged += Team1Q2_TextChanged;
txtbox2.TextChanged += Team1Q2_TextChanged;
txtbox3.TextChanged += Team1Q2_TextChanged;
//so on
订阅事件处理程序:

private void Team1Q2_TextChanged(object sender, EventArgs e)
{
    TextBox senderTextBox = sender as TextBox;
    int parsedValue;
    if (!int.TryParse(senderTextBox.Text, out parsedValue))
    {
        senderTextBox.Text = "0";
        return;
    }

    else
    {
        CalculateTotals();
    }
}
txtbox1.TextChanged += Team1Q2_TextChanged;
txtbox2.TextChanged += Team1Q2_TextChanged;
txtbox3.TextChanged += Team1Q2_TextChanged;
//so on

为所有
文本框
注册此事件处理程序,并强制转换
发送者
对象以使用事件引发者文本框

代码:

private void Team1Q2_TextChanged(object sender, EventArgs e)
{
    TextBox senderTextBox = sender as TextBox;
    int parsedValue;
    if (!int.TryParse(senderTextBox.Text, out parsedValue))
    {
        senderTextBox.Text = "0";
        return;
    }

    else
    {
        CalculateTotals();
    }
}
txtbox1.TextChanged += Team1Q2_TextChanged;
txtbox2.TextChanged += Team1Q2_TextChanged;
txtbox3.TextChanged += Team1Q2_TextChanged;
//so on
订阅事件处理程序:

private void Team1Q2_TextChanged(object sender, EventArgs e)
{
    TextBox senderTextBox = sender as TextBox;
    int parsedValue;
    if (!int.TryParse(senderTextBox.Text, out parsedValue))
    {
        senderTextBox.Text = "0";
        return;
    }

    else
    {
        CalculateTotals();
    }
}
txtbox1.TextChanged += Team1Q2_TextChanged;
txtbox2.TextChanged += Team1Q2_TextChanged;
txtbox3.TextChanged += Team1Q2_TextChanged;
//so on

为所有
文本框
注册此事件处理程序,并强制转换
发送者
对象以使用事件引发者文本框

代码:

private void Team1Q2_TextChanged(object sender, EventArgs e)
{
    TextBox senderTextBox = sender as TextBox;
    int parsedValue;
    if (!int.TryParse(senderTextBox.Text, out parsedValue))
    {
        senderTextBox.Text = "0";
        return;
    }

    else
    {
        CalculateTotals();
    }
}
txtbox1.TextChanged += Team1Q2_TextChanged;
txtbox2.TextChanged += Team1Q2_TextChanged;
txtbox3.TextChanged += Team1Q2_TextChanged;
//so on
订阅事件处理程序:

private void Team1Q2_TextChanged(object sender, EventArgs e)
{
    TextBox senderTextBox = sender as TextBox;
    int parsedValue;
    if (!int.TryParse(senderTextBox.Text, out parsedValue))
    {
        senderTextBox.Text = "0";
        return;
    }

    else
    {
        CalculateTotals();
    }
}
txtbox1.TextChanged += Team1Q2_TextChanged;
txtbox2.TextChanged += Team1Q2_TextChanged;
txtbox3.TextChanged += Team1Q2_TextChanged;
//so on

为所有
文本框
注册此事件处理程序,并强制转换
发送者
对象以使用事件引发者文本框

代码:

private void Team1Q2_TextChanged(object sender, EventArgs e)
{
    TextBox senderTextBox = sender as TextBox;
    int parsedValue;
    if (!int.TryParse(senderTextBox.Text, out parsedValue))
    {
        senderTextBox.Text = "0";
        return;
    }

    else
    {
        CalculateTotals();
    }
}
txtbox1.TextChanged += Team1Q2_TextChanged;
txtbox2.TextChanged += Team1Q2_TextChanged;
txtbox3.TextChanged += Team1Q2_TextChanged;
//so on
订阅事件处理程序:

private void Team1Q2_TextChanged(object sender, EventArgs e)
{
    TextBox senderTextBox = sender as TextBox;
    int parsedValue;
    if (!int.TryParse(senderTextBox.Text, out parsedValue))
    {
        senderTextBox.Text = "0";
        return;
    }

    else
    {
        CalculateTotals();
    }
}
txtbox1.TextChanged += Team1Q2_TextChanged;
txtbox2.TextChanged += Team1Q2_TextChanged;
txtbox3.TextChanged += Team1Q2_TextChanged;
//so on

Team1Q2_TextChanged只是您为其中一个文本框创建的事件处理程序。您可以对所有文本框使用相同的事件处理程序。您必须将所有文本框的已更改事件设置为同一事件处理程序

如果要在VisualStudio designer中设置EventHandler,只需复制粘贴所有事件的相同事件处理程序

如果要在C#代码隐藏中设置事件处理程序,可以这样做

textBox1.TextChanged += new EventHandler(textBox_TextChanged);
textBox2.TextChanged += new EventHandler(textBox_TextChanged);
textBox3.TextChanged += new EventHandler(textBox_TextChanged);

如果您看到,我对所有文本框使用相同的事件处理程序。

Team1Q2\u TextChanged只是您为其中一个文本框创建的事件处理程序。您可以对所有文本框使用相同的事件处理程序。您必须将所有文本框的已更改事件设置为同一事件处理程序

如果要在VisualStudio designer中设置EventHandler,只需复制粘贴所有事件的相同事件处理程序

如果要在C#代码隐藏中设置事件处理程序,可以这样做

textBox1.TextChanged += new EventHandler(textBox_TextChanged);
textBox2.TextChanged += new EventHandler(textBox_TextChanged);
textBox3.TextChanged += new EventHandler(textBox_TextChanged);

如果您看到,我对所有文本框使用相同的事件处理程序。

Team1Q2\u TextChanged只是您为其中一个文本框创建的事件处理程序。您可以对所有文本框使用相同的事件处理程序。您必须将所有文本框的已更改事件设置为同一事件处理程序

如果要在VisualStudio designer中设置EventHandler,只需复制粘贴所有事件的相同事件处理程序

如果要在C#代码隐藏中设置事件处理程序,可以这样做

textBox1.TextChanged += new EventHandler(textBox_TextChanged);
textBox2.TextChanged += new EventHandler(textBox_TextChanged);
textBox3.TextChanged += new EventHandler(textBox_TextChanged);

如果您看到,我对所有文本框使用相同的事件处理程序。

Team1Q2\u TextChanged只是您为其中一个文本框创建的事件处理程序。您可以对所有文本框使用相同的事件处理程序。您必须将所有文本框的已更改事件设置为同一事件处理程序

如果要在VisualStudio designer中设置EventHandler,只需复制粘贴所有事件的相同事件处理程序

如果要在C#代码隐藏中设置事件处理程序,可以这样做

textBox1.TextChanged += new EventHandler(textBox_TextChanged);
textBox2.TextChanged += new EventHandler(textBox_TextChanged);
textBox3.TextChanged += new EventHandler(textBox_TextChanged);

如果您看到我对所有文本框使用相同的事件处理程序。

表单\u load
中,将
文本\u changed
事件分配给所有文本框

foreach (Control item in this.Controls)
{
    if (item.GetType() == typeof(TextBox))
        (item as TextBox).TextChanged += Form6_TextChanged;
}
然后您可以处理所有
text\u更改的
事件

void Form6_TextChanged(object sender, EventArgs e)
{
    TextBox T = sender as TextBox;
    //this is your detail
}

Form\u load
中,将
text\u changed
事件分配给所有文本框

foreach (Control item in this.Controls)
{
    if (item.GetType() == typeof(TextBox))
        (item as TextBox).TextChanged += Form6_TextChanged;
}
然后您可以处理所有
text\u更改的
事件

void Form6_TextChanged(object sender, EventArgs e)
{
    TextBox T = sender as TextBox;
    //this is your detail
}

Form\u load
中,将
text\u changed
事件分配给所有文本框

foreach (Control item in this.Controls)
{
    if (item.GetType() == typeof(TextBox))
        (item as TextBox).TextChanged += Form6_TextChanged;
}
然后您可以处理所有
text\u更改的
事件

void Form6_TextChanged(object sender, EventArgs e)
{
    TextBox T = sender as TextBox;
    //this is your detail
}

Form\u load
中,将
text\u changed
事件分配给所有文本框

foreach (Control item in this.Controls)
{
    if (item.GetType() == typeof(TextBox))
        (item as TextBox).TextChanged += Form6_TextChanged;
}
然后您可以处理所有
text\u更改的
事件

void Form6_TextChanged(object sender, EventArgs e)
{
    TextBox T = sender as TextBox;
    //this is your detail
}

只需在设计模式下将文本框的所有
TextChanged
事件设置为
Team1Q2\u TextChanged

只需在设计模式下将文本框的所有
TextChanged
事件设置为
Team1Q2\u TextChanged

只需将文本框的所有
TextChanged
事件设置为
Team1Q2\u TextChanged
在设计模式下。

只需将文本框中的所有
TextChanged
事件设置为
Team1Q2\u TextChanged
在设计模式下。

尝试如下

private void TextBoxEventHandler_TextChanged(object sender, EventArgs e)
{
   var entryField = sender as TextBox;

   lblKeyedValue.Text = entryField.Text.ToUpper();
}  
并将此事件处理程序添加到文本框中,如下所示

yourTextBoxName.TextChanged += new EventHandler(TextBoxEventHandler_TextChanged);
像这样试试

private void TextBoxEventHandler_TextChanged(object sender, EventArgs e)
{
   var entryField = sender as TextBox;

   lblKeyedValue.Text = entryField.Text.ToUpper();
}  
并将此事件处理程序添加到文本框中,如下所示

yourTextBoxName.TextChanged += new EventHandler(TextBoxEventHandler_TextChanged);
像这样试试

private void TextBoxEventHandler_TextChanged(object sender, EventArgs e)
{
   var entryField = sender as TextBox;

   lblKeyedValue.Text = entryField.Text.ToUpper();
}  
并将此事件处理程序添加到文本框中,如下所示

yourTextBoxName.TextChanged += new EventHandler(TextBoxEventHandler_TextChanged);
像这样试试

private void TextBoxEventHandler_TextChanged(object sender, EventArgs e)
{
   var entryField = sender as TextBox;

   lblKeyedValue.Text = entryField.Text.ToUpper();
}  
并将此事件处理程序添加到文本框中,如下所示

yourTextBoxName.TextChanged += new EventHandler(TextBoxEventHandler_TextChanged);

打开窗体的designer.cs,可以看到事件处理程序映射。您需要编辑此文件,以便为所有textbox控件绑定相同的事件处理程序函数。在窗体的designer.cs中,您可以看到事件处理程序映射。您需要编辑此文件,以便为所有textbox控件绑定相同的事件处理程序函数。在窗体的designer.cs中,您可以看到事件处理程序映射。您需要编辑此文件,以便为所有textbox控件绑定相同的事件处理程序函数。在窗体的designer.cs中,您可以看到事件处理程序映射。您需要编辑此文件,以便为所有文本框控件绑定相同的事件处理程序函数。使用
typeof()
比使用类型名称更好,因此您可以使用
if(item.GetType()==typeof(textbox))
使用
typeof()
比使用类型名称更好,因此您可以使用
if(item.GetType()==typeof(textbox))
使用
typeof()
比使用类型名更好,所以你可以使用
if(item.GetType()==typeof(TextBox))
使用
typeof()
比使用类型名更好,所以你可以使用
if(item.GetType()==typeof(TextBox))
在我的lo中只增加了一行