【问题标题】:How to capture Ctrl-Z keystroke in a RichTextBox如何在 RichTextBox 中捕获 Ctrl-Z 击键
【发布时间】:2014-04-16 17:07:48
【问题描述】:

当用户在 RichTextBox 控件中按下CTRL-Z(同时按下CTRLZ)时,我需要进行捕捉。

我已关闭 ShortCutsEnabled 属性。我已经尝试了所有我能想到的将KeyCodeKeyDataKeyDownKeyPress 事件结合使用的组合。

我可以捕获CTRLZ,但不能同时捕获两者。 RichTextBox 是否在我看到它之前捕获了它,即使快捷键被禁用?

有没有人可以解决这个问题?

【问题讨论】:

    标签: c# winforms richtextbox


    【解决方案1】:

    你可以简单地使用 CTRL-Z

     textBox1.KeyDown += new KeyEventHandler(textBox1_KeyDown);
    
    void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
             if(e.KeyCode == Keys.Z && (e.Control)) {
                 MessageBox.Show("Ctrl + Z Pressed!");
             }
        }
    

    【讨论】:

    • 谢谢,成功了!我还了解到我需要打开 ShortCutsEnabled。
    【解决方案2】:

    KeyDown 事件中检查KeyCodeModifiers

    private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Modifiers == Keys.Control && e.KeyCode == Keys.Z)
            MessageBox.Show("Ctrl-Z Pressed");
    }
    

    【讨论】:

    • 谢谢,这也有效!我还了解到我需要打开 ShortCutsEnabled。
    【解决方案3】:
      void richTextBox1_KeyDown(object sender, KeyEventArgs e)
      {
          if ((Control.ModifierKeys & Keys.Control) == Keys.Control && e.KeyCode == Keys.Z)
            {
                 MessageBox.Show("Ctrl + Z is Pressed");
            }
      }
    

    试试这个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      • 2016-09-18
      • 2017-07-15
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多