C# 无法处理文本框的 Ctrl+K 事件

C# Cannot handle Ctrl+K event of textbox

我想在用户按下文本框上的 Ctrl + K 时执行一些操作。

 private void subject_TextBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Control && e.KeyCode == Keys.K)
                  MessageBox.Show("!");
        }  

当我 运行 它时没有任何反应。

当我调试时,我可以看到 e.Control 为真(这意味着我按下了 Ctrl)但是 e.KeyCode 不等同于 K。

有什么想法吗?

KeyDown event中,你只需要键盘的'state'。

您可能想看看这个主题:

Capture multiple key downs in C#

真不知道是什么问题。
可以在按下 Ctrl 时立即触发事件,而无需等待 K 也被按下。

但是,当我在 TextBox_KeyUp 事件中使用相同的代码时,它工作正常。

 protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if (keyData == (Keys.Control | Keys.K) && focusedTextbox == subject_TextBox)
        {
           //Some Code
        }
    }
private TextBox focusedTextbox = null;


 private void subject_TextBox_KeyDown(object sender, KeyEventArgs e)
        {
            MethodName(e.KeyCode)
        } 
 private void MethodName(Keys keys)
    {
        focusedTextbox = (TextBox)sender;
    }

使用这段代码,这应该可以工作我自己测试过它会工作,你会想要 运行 每个文本框中的 'MethodName' 方法,或者如果你能找到更好的方法更改 'focusedTextBox' 字段然后这样做希望这有所帮助。