技术上正确的方法来处理RichTextBox的ProcessCmdKey中的Ctrl-AnyKey事件

时间:2018-01-24 07:39:30

标签: c# richtextbox

我创建了一个派生的RichTextBox类,如下所示:

public partial class FACTConsole : RichTextBox {
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
        if ((keyData == (Keys.Control | Keys.A)) ||
            (keyData == (Keys.Control | Keys.Z)) ||
            (keyData == (Keys.Control | Keys.V))) {
            return true;
        }
        //:
        //: Other keys and combinations
        //:
    }
}

这适用于那些特定的Ctrl键组合。

但我的意图是禁用任何Ctrl键组合(Ctrl + AnyKey)。

我尝试按如下方式更改代码:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
    if (keyData == Keys.Control) {
        return true;
    }
    //:
    //: Other keys and combinations
    //:
}

但这似乎并没有像预期的那样奏效。实际上,它会导致非常奇怪的行为,甚至难以在调试模式中逐步执行。处理此要求的技术上正确的方法是什么?

顺便说一下:我不想在这种情况下使用KeyDown事件,因为我的ProcessCmdKey处理了许多其他情况和密钥,如果我还有一个带有e.SuppressKeyPress = true;的KeyDown

,那么它会出错。

0 个答案:

没有答案