我有一个文本框,在某些情况下,在Enter事件中,我需要将焦点设置为另一个文本框。
我试过那段代码:
private void TextBox1_Enter(object sender, EventArgs e)
{
if(_skipTextBox1) TextBox2.Focus();
}
但是这段代码不起作用。之后我在MSDN上找到了:
请勿尝试从Enter,GotFocus,Leave,LostFocus,Validating或Validated事件处理程序中设置焦点。
那我该怎么做呢?
答案 0 :(得分:3)
推迟执行Focus()方法,直到事件执行完毕。使用Control.BeginInvoke()方法优雅地完成。像这样:
private void textBox2_Enter(object sender, EventArgs e) {
this.BeginInvoke((MethodInvoker)delegate { textBox3.Focus(); });
}
答案 1 :(得分:0)
您可以改为处理KeyPress事件:
private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Return)
{
e.Handled = true;
TextBox2.Focus();
}
}
答案 2 :(得分:0)
textBox.Select();
或
textBox.Focus();
或
来自set TabIndex = 0
的属性的textBox
。
这两种方法都用于将注意力设置在 C#, .NET
中的textBox