我希望当用户键入/更改的文本时textBox1
,同时textBox2
清除一秒钟的文本。为此,我仅向表单添加了一个事件:
private void textBox1_TextChanged(object sender, EventArgs e)
{
this.textBox2.Text = "";
}
但是,这导致textBox2
被清除,但用户键入的输入丢失了。几乎:
我的期望:如果textBox1
文本为空而textBox2
不是,那么当用户在第一个文本框中键入“ A”时,我将同时textBox2
清除和输入字母“ A” textBox1
。
我得到什么:在textBox2
得到明确,但字母“A”不会出现到textBox1
:我将不得不再次键入时间得到它到正确的地方。
我应该怎么做才能textBox1
在清除时让用户输入textBox2
?
编辑:实际上忘记添加代码的重要部分,这是我上面发布的方法的“双胞胎”兄弟:
private void textBox2_TextChanged(object sender, EventArgs e)
{
this.textBox1.Text = "";
}
我稍作修改,我的问题是:如何在避免将清除textBox2
视为text_changed事件的同时满足我的预期行为?
您可以禁用事件处理程序,以避免一个事件干扰另一个事件。
您也可以使用全局布尔变量,但我更喜欢这种方法,因为它不需要全局变量和if
private void textBox1_TextChanged(object sender, EventArgs e)
{
this.textBox2.TextChanged -= textBox2_TextChanged;
this.textBox2.Text = "";
this.textBox2.TextChanged += textBox2_TextChanged;
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
this.textBox1.TextChanged -= textBox1_TextChanged;
this.textBox1.Text = "";
this.textBox1.TextChanged += textBox1_TextChanged;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句