Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Enter事件中设置焦点的替代方法_C#_Winforms_Focus - Fatal编程技术网

C# 从Enter事件中设置焦点的替代方法

C# 从Enter事件中设置焦点的替代方法,c#,winforms,focus,C#,Winforms,Focus,我有一个文本框,在某些情况下,在Enter事件中,我需要将焦点设置为不同的文本框 我试过这个密码: private void TextBox1_Enter(object sender, EventArgs e) { if(_skipTextBox1) TextBox2.Focus(); } 但是这个代码不起作用。之后,我在MSDN上发现: 请勿尝试在Enter、GOTCHOCUS、LEVE、LostFocus、Validating或Validated事件处理程序中设置焦点 那么

我有一个文本框,在某些情况下,在Enter事件中,我需要将焦点设置为不同的文本框

我试过这个密码:

 private void TextBox1_Enter(object sender, EventArgs e)
 {
     if(_skipTextBox1) TextBox2.Focus();
 }
但是这个代码不起作用。之后,我在MSDN上发现:

请勿尝试在Enter、GOTCHOCUS、LEVE、LostFocus、Validating或Validated事件处理程序中设置焦点

那么,我如何以其他方式处理呢?

您可以改为处理事件:

private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
   if (e.KeyChar == (char)Keys.Return)
   {
      e.Handled = true;
      TextBox2.Focus();
   }
}

推迟执行Focus()方法,直到事件执行完毕。通过使用Control.BeginInvoke()方法优雅地完成。像这样:

    private void textBox2_Enter(object sender, EventArgs e) {
        this.BeginInvoke((MethodInvoker)delegate { textBox3.Focus(); });
    }

从该
文本框的属性设置TabIndex=0


这两种方法都用于在C#.NET

中设置对
文本框的焦点,它不是“回车键”,而是“回车事件”。>@亚历克斯-啊,好的,对不起。在这种情况下,我可能会设置一个
计时器
,然后在Enter事件中启用它,并将
间隔
设置为200ms之类的小值。
textBox.Select();
textBox.Focus();