webentwicklung-frage-antwort-db.com.de

Erkennen Sie das Drücken der Tabulatortaste in der Textbox

Ich versuche das zu erkennen Tab Tastendruck in einer TextBox. Ich weiß, dass die Tabulatortaste die Ereignisse KeyDown, KeyUp oder KeyPress nicht auslöst. Ich fand: Erkennen der Tabulatortaste in Windows Forms von BlackWasp im Internet. Sie schlagen vor, den ProcessCmdKey zu überschreiben, was ich getan habe, aber er wird auch nicht ausgelöst. Gibt es eine zuverlässige Möglichkeit, das Drücken der Tabulatortaste zu erkennen?

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;
}

Gemäß dem Vorschlag von Cody Gray habe ich den Code wie folgt geändert:

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);
    }

Das Problem ist, dass das Drücken der Tabulatortaste nicht erfasst wird.

9
user2102327

Einige Tastendrücke, wie z TABRETURNESCund Pfeiltasten werden normalerweise von einigen Steuerelementen ignoriert, da sie nicht als Eingabetastendrücke betrachtet werden.

Sie können das Ereignis PreviewKeyDownNAME _ Ihres Steuerelements verarbeiten, um diese Tastenanschläge zu verarbeiten und sie als Eingabetaste festzulegen.

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;
    }
}
12
Reza Aghaei

sie können diesen Code für Tabulatorvorgaben verwenden ...

 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) {

        }
    }
0
Tejas Girase