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

时间:2016-05-10 09:16:03

标签: c# winforms textbox event-handling keyboard-shortcuts

当用户在文本框上按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.

enter image description here

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

 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'每个文本框中的方法,或者如果您可以找到更好的方法来更改“focusTextBox”。然后,希望这有帮助。

答案 1 :(得分:0)

KeyDown event中,您只需要询问“状态”状态。键盘。

您可能想查看此主题:

Capture multiple key downs in C#

答案 2 :(得分:0)

真的不知道问题的原因是什么 可以在按下Ctrl后立即触发事件,而不必等待K被按下。

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