1

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

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

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

这行得通吗?

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 触发了消息?

4

2 回答 2

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).
            }
        } 
于 2013-04-09T17:14:12.507 回答
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
    } 
}
于 2013-04-09T17:33:05.530 回答