我创建了一个派生的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