我有一个文本框,在某些情况下,在 Enter 事件中我需要将焦点设置到不同的文本框。
我尝试了该代码:
private void TextBox1_Enter(object sender, EventArgs e)
{
if(_skipTextBox1) TextBox2.Focus();
}
但这段代码不起作用。后来我在MSDN上查到:
不要尝试在 Enter、GotFocus、Leave、LostFocus、Validating 或 Validated 事件处理程序中设置焦点。
那么我怎样才能用其他方式做到这一点呢?
推迟执行 Focus() 方法,直到事件执行完毕。通过使用 Control.BeginInvoke() 方法可以优雅地完成。像这样:
private void textBox2_Enter(object sender, EventArgs e) {
this.BeginInvoke((MethodInvoker)delegate { textBox3.Focus(); });
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)