任何TextBox的文本发生更改时触发事件处理程序

时间:2013-04-09 16:54:46

标签: c# c winforms visual-studio-2012 event-handling

我正在构建一个格式非常不同的消息,每次创建或更新某个人的帐户信息时都会发送该消息。我正在从多个标签的表单中的许多文本框中生成消息。

计划是在每次打开帐户时将帐户中的所有当前信息加载到新邮件中,然后更改已更改的任何文本框的值。

为每个文本框单独执行此操作会很容易但很费时间。

这会有用吗?

person_last_name.TextChanged += new EventHandler(AllTextBoxes_TextChanged);
person_first_name.TextChanged += new EventHandler(AllTextBoxes_TextChanged);

private void AllTextBoxes_TextChanged(object sender, EventArgs e)

如果是,您如何使用sender对象参数来检测哪个TextBox触发了该消息?

2 个答案:

答案 0 :(得分:2)

如果您的Xmal代码如下:

<TextBox Name="person_last_name" TextChanged="AllTextBoxes_TextChanged"></TextBox>
<TextBox Name="person_first_name" TextChanged="AllTextBoxes_TextChanged"></TextBox>

您可以像这样检测触发的文本框:

 private void AllTextBoxes_TextChanged(object sender, TextChangedEventArgs e)
        {
            string triggered = (e as TextBox).Name;
            if (triggered == "yourtarget")
            {
                //Do some thing with selected
                //(e as TextBox).
            }
        } 

答案 1 :(得分:1)

是的,这应该有用

如果要为所有文本框执行不同的操作,可以使用switch语句

private void AllTextBoxes_TextChanged(object sender, TextChangedEventArgs e)
{
    string triggered = (e as TextBox).Name;
    switch (triggered)
    { 
    case "name1":
        //somecode
    case "name2":
        //somecode
    //etc
    } 
}