C# - 文本形式的文本更改事件:有更好的方法吗?

时间:2011-03-26 21:55:48

标签: c# .net winforms

我的目标是在用户输入时将标签的标题更改为文本字段中的标题。嗯,问题是,文本形式是在一个过程中动态创建的,因此无法从其他过程中获取。我创建了一个事件处理程序,但令我惊讶的是,EventArgs没有保存任何文本字段的属性。代码如下:

private void toolStripButton1_Click(object sender, EventArgs e)
{
    NewChar();
}
private void NewChar()
{
    TabPage ntab = new TabPage("New char");
    TextBox cname = new TextBox();
    tabControl1.Controls.Add(ntab);
    ntab.Controls.Add(cname);
    cname.Location = new Point(10, 10);
    cname.TextChanged += new EventHandler(cname_TextChanged);
}

最后,我注意到,该事件的发件人值保存了文本字段的当前文本,因此我只是从发件人的字符串重新表示中删除此值:

void cname_TextChanged(object sender, EventArgs e)
{
    string tmp = sender.ToString();
    int pos = tmp.IndexOf(":");
    string txt = tmp.Substring(pos+1);
    tabControl1.SelectedTab.Text = txt;
}

虽然这种方法很好,但我觉得必须采用更温和的方式来做到这一点。如果你碰巧认识一个,请你启发我吗?

感谢您的时间。

1 个答案:

答案 0 :(得分:2)

您可以将其转换为文本框,然后直接访问Text

,而不是解析ToString()的结果。
void cname_TextChanged(object sender, EventArgs e)
{
    TextBox txt= sender as TextBox;
    if (txt !=null)
          tabControl1.SelectedTab.Text = txt.Text;
}