更新不使用输入控件的文本框
本文关键字:文本 控件 输入 更新 | 更新日期: 2023-09-27 18:11:32
我有一个windows窗体应用程序,它由一堆控件组成,但更具体地说,两个textBoxes
。其中一个是只读的。只读的textBox
值应该与用户可以输入的textBox
值相同。
因此,如果用户在textBox
A中输入"Hello World",则textBox
B中的值应自动更新为"Hello World"。
我该怎么做呢?我知道我只需要设置文本值,我只是不确定在哪里放置代码来自动完成它,而不是在单击按钮或沿着这些行执行。
TextChanged event:
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox2.Text = textBox1.Text;
}
听起来你想要这样做:
writableTextBox.TextChanged += delegate {
readonlyTextBox.Text = writableTextBox.Text;
};
换句话说,当一个文本框中的文本发生变化时,更新另一个文本框。这使用Control.TextChanged
事件。
如果您希望textBoxB在textBoxA的文本更改后立即更新(即在用户按下textBoxA中的键后立即更新),则事件为TextChanged:
this.textBoxA.TextChanged += new System.EventHandler(this.textBoxA_TextChanged);
private void textBoxA_TextChanged(object sender, EventArgs e)
{
textBoxB.Text = textBoxA.Text;
}
如果您希望在用户完成编辑textBoxA之后才更新textBoxB中的文本,您应该使用Leave事件:
this.textBoxA.Leave += new System.EventHandler(this.textBoxA_Leave);
private void textBoxA_Leave(object sender, EventArgs e)
{
textBoxB.Text = textBoxA.Text;
}
这应该可以满足您的需求:
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox2.Text = textBox1.Text;
}
比事件方法更短(更好?)的是使用winform的数据绑定。在InitializeComponents
调用之后使用:
readonlyTextBox.DataBindings.Add("Text", writableTextBox, "Text");