我试图在
问题在于它无法捕获Tab键按下的事件。
TextBox
中检测Tab键的按下操作。
我知道Tab键并不会触发KeyDown
、KeyUp
或KeyPress
事件。
在网上找到了BlackWasp的文章“在Windows窗体中检测Tab键”,他们建议重写ProcessCmdKey,但这也没有起作用。
有没有可靠的方法来检测Tab键按下?protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
bool baseResult = base.ProcessCmdKey(ref msg, keyData);
if (keyData == Keys.Tab && textBox_AllUserInput.Focused)
{
MessageBox.Show("Tab key pressed.");
return true;
}
if (keyData == (Keys.Tab | Keys.Shift) && textBox_AllUserInput.Focused)
{
MessageBox.Show("Shift-Tab key pressed.");
return true;
}
return baseResult;
}
根据Cody Gray的建议,我将代码更改如下:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Tab && textBox_AllUserInput.Focused)
{
MessageBox.Show("Tab key pressed."); }
if (keyData == (Keys.Tab | Keys.Shift) && textBox_AllUserInput.Focused)
{
MessageBox.Show("Shift-Tab key pressed."); }
return base.ProcessCmdKey(ref msg, keyData);
}
问题在于它无法捕获Tab键按下的事件。
return baseResult; } 我尝试了所有三个答案,但都不起作用。
- user2102327base.ProcessCmdKey(...)
移动到函数结尾处。 - Cody GrayTextBox
的Tab
键时,您可以简单地处理PreviewKeyDown
事件,而无需覆盖ProcessCmdKey
并检查哪个控件处于焦点! - Reza Aghaei