检测Tab键在TextBox中按

我试图在TextBox检测Tab键。 我知道Tab键不会触发KeyDownKeyUpKeyPress事件。 我发现:在互联网上检测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键按下。

某些控件通常会忽略某些按键,例如TABRETURNESC和箭头键,因为它们不被视为输入键按下。

您可以处理控件的PreviewKeyDown事件来处理这些键击并将它们设置为输入键。

 private void textBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) { if(e.KeyData == Keys.Tab) { MessageBox.Show("Tab"); e.IsInputKey = true; } if (e.KeyData == (Keys.Tab | Keys.Shift)) { MessageBox.Show("Shift + Tab"); e.IsInputKey = true; } } 

你可以用这个代码来制作标签…

  private void input_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { //Check here tab press or not if (e.KeyCode == Keys.Tab) { //our code here } //Check for the Shift Key as well if (Control.ModifierKeys == Keys.Shift && e.KeyCode == Keys.Tab) { } }