J'essaie de détecter le Tab appuyez dans une TextBox
name__. Je sais que la touche Tab ne déclenche pas les événements KeyDown
name__, KeyUp
ou KeyPress
name__. J'ai trouvé: Détecter la touche de tabulation dans Windows Forms de BlackWasp sur Internet. Ils suggèrent de remplacer ProcessCmdKey, ce que j'ai fait, mais cela ne se déclenche pas non plus. Existe-t-il un moyen fiable de détecter une pression sur la touche de tabulation?
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;
}
Selon la suggestion de Cody Gray, j'ai modifié le code comme suit:
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);
}
Le problème est qu'il ne capture pas la pression sur la touche de tabulation.
Certaines touches, telles que la TAB, RETURN, ESC, et les touches fléchées, sont généralement ignorés par certaines commandes car elles ne sont pas considérées comme des pressions sur les touches.
Vous pouvez gérer PreviewKeyDown
l'événement de votre contrôle pour gérer ces traits de clé et les définir comme clé d'entrée.
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;
}
}
vous pouvez utiliser ce code pour onglet sont presé ...
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) {
}
}