我已经设置了" 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时,它需要两个标签索引。 例如。
当我按下ENTER离开组合框时,光标(FOCUS)直接进入文本框3 我希望将重点放在组合框的下一个控件上,即textbox 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);
}