簡體   English   中英

檢測文本框中的 Tab 鍵按下

[英]Detect the Tab Key Press in TextBox

我正在嘗試檢測TextBoxTab按鍵。 我知道 Tab 鍵不會觸發KeyDownKeyUpKeyPress事件。 我發現:Detecting the Tab Key in Windows Forms of BlackWasp in the internet。 他們建議覆蓋我所做的 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) {

        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM