Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#richTextBox过滤掉或重新映射击键_C#_Winforms_Richtextbox - Fatal编程技术网

C#richTextBox过滤掉或重新映射击键

C#richTextBox过滤掉或重新映射击键,c#,winforms,richtextbox,C#,Winforms,Richtextbox,在Win表单中使用C#,过滤(或重新映射)richTextBox中的按键(Ctrl-Shift-Z)的最简单方法是什么?我知道CodeProject上有各种各样的键盘钩子项目,但它们涉及整个类。我想使用最简单的方法,比如一个函数重写。原因:richTextBox似乎以与Ctrl-Z相同的方式对待Ctrl-Shift-Z,即撤销。我更喜欢使用Ctrl-Shift-Z作为重做。我尝试了“KeyDown”方法,但它似乎没有捕获击键,击键的处理似乎比这个低 private void richTextBo

在Win表单中使用C#,过滤(或重新映射)richTextBox中的按键(Ctrl-Shift-Z)的最简单方法是什么?我知道CodeProject上有各种各样的键盘钩子项目,但它们涉及整个类。我想使用最简单的方法,比如一个函数重写。原因:richTextBox似乎以与Ctrl-Z相同的方式对待Ctrl-Shift-Z,即撤销。我更喜欢使用Ctrl-Shift-Z作为重做。我尝试了“KeyDown”方法,但它似乎没有捕获击键,击键的处理似乎比这个低

private void richTextBox_KeyDown(object sender, KeyEventArgs e) {
    if (e.KeyCode == Keys.Z && Control.ModifierKeys == Keys.Shift && Control.ModifierKeys == Keys.Control) {
        richTextBox.Redo();
    }
}

在父窗体中,将KeyPreview属性设置为true,然后在窗体的KeyDown事件中查找所需的快捷方式

public partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        this.KeyPreview = true;
        this.KeyDown += MyForm_KeyDown;
    }

    private void MyForm_KeyDown(object sender, KeyEventArgs e)
    {
        if ((e.Modifiers & Keys.Shift) != 0 &&
            (e.Modifiers & Keys.Control) != 0 &&
            (e.KeyCode == Keys.Z))
        {
            e.Handled = true;
            richTextBox1.Redo();
        }
    }
}
比如:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
  if (keyData == (Keys.Control | Keys.Shift | Keys.Z)) {
    richTextBox.Redo();
    return true;
  }
  return base.ProcessCmdKey(ref msg, keyData);
}

正如他在回答中所说,您还应该检查以确保表单的属性为True。

WinForm(我将编辑原件)我不想禁用快捷键,我只希望Ctrl-Shift-Z像Ctrl-Y(重做)一样工作。完美。正是我想要的。很乐意帮忙。快乐编码!