以编程方式更改了TAB密钥问题 - c#窗口应用程序

时间:2014-12-29 14:26:23

标签: c# winforms combobox windows-applications

我已经设置了" ENTER"键作为" TAB" Windows窗体中的密钥。

以下是代码

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        KeyEventArgs e = new KeyEventArgs(keyData);
        if (e.KeyCode == Keys.Enter)
        {
            SendKeys.Send("{TAB}");
        }
        if (e.KeyCode == Keys.Escape)
        {
            this.Close();
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }

它与所有控件完美配合,但当我在任何组合框上按ENTER时,它需要两个标签索引。 例如。

  1. TextBox1中
  2. 组合框
  3. TextBox2中
  4. textbox3
  5. textbox4
  6. 当我按下ENTER离开组合框时,光标(FOCUS)直接进入文本框3 我希望将重点放在组合框的下一个控件上,即textbox 2

    请帮帮我

    提前谢谢..!

2 个答案:

答案 0 :(得分:1)

Control.TabIndex属性决定在按下 Tab 键时控件应该聚焦的顺序。

您应该按照Tab键按下的顺序设置控件的TabIndex属性。

也就是说,您不应该使用SendKeys.Send("{TAB}")方法来模拟 Tab 按键。您应该使用Control.SelectNextControl方法来实现此目的。

答案 1 :(得分:1)

发送标签后只需return true;

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        KeyEventArgs e = new KeyEventArgs(keyData);
        if (e.KeyCode == Keys.Enter)
        {
            SendKeys.Send("{TAB}");
            return true;
        }
        if (e.KeyCode == Keys.Escape)
        {
            this.Close();
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }