检测Tab键在TextBox中按
我试图在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键按下。
某些控件通常会忽略某些按键,例如TAB , RETURN , ESC和箭头键,因为它们不被视为输入键按下。
您可以处理控件的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) { } }