我的目标是在用户输入时将标签的标题更改为文本字段中的标题。嗯,问题是,文本形式是在一个过程中动态创建的,因此无法从其他过程中获取。我创建了一个事件处理程序,但令我惊讶的是,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;
}
虽然这种方法很好,但我觉得必须采用更温和的方式来做到这一点。如果你碰巧认识一个,请你启发我吗?
感谢您的时间。
答案 0 :(得分:2)
您可以将其转换为文本框,然后直接访问Text
,而不是解析ToString()的结果。void cname_TextChanged(object sender, EventArgs e)
{
TextBox txt= sender as TextBox;
if (txt !=null)
tabControl1.SelectedTab.Text = txt.Text;
}