Я пытаюсь обнаружить нажатие клавиши Tab в TextBox
.
Я знаю, что клавиша Tab не вызывает события KeyDown
, KeyUp
или KeyPress
. Я нашел: Обнаружение ключа вкладки в Windows Forms BlackWasp в Интернете.
Они предлагают переопределить 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;
}
Согласно предложению Коди Грея, я изменил код следующим образом:
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.