C#文本框禁用快捷方式

我在我的Windows窗体应用程序中使用一个文本框,我需要禁用快捷键CTRL + ICTRL + H. 我尝试了通过谷歌找到的许多不同的解决方案,但它不起作用。

我已经在我的应用程序中使用CTRL + 作为自定义快捷方式,我不希望在我的文本框中通过此命令插入一个tabstop。 无论出于何种原因, CTRL + H就像按删除一样?

如果我在控件的属性中将“快捷方式已启用”设置为false,则CTRL + ICTRL + H仍然有效。 然后禁用CTRL + CCTRL + V. 如果我将“Shortcuts enabled”设置为false,我希望所有快捷方式都关闭。

我尝试了以下代码,我找到了某处,但它也没有阻止CTRL + ICTRL + H.

private void textBoxComment_KeyDown(object sender, KeyEventArgs e) { if ( e.Modifiers == Keys.Control ) { switch(e.KeyCode) { case Keys.C: case Keys.X: case Keys.V: case Keys.Z: case Keys.I: case Keys.H: e.Handled = true; break; default: break; } } } 

尝试重写ProcessCmdKey函数:

 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if ((keyData & Keys.Control) > 0 && (keyData & Keys.KeyCode) == Keys.V) { return true; } return base.ProcessCmdKey(ref msg, keyData); } 

使用shortcutsenabled属性,以便您可以更有选择性地从鼠标和键盘中排除快捷方式。

 TextBox.ShortcutsEnabled = false; 

参考msdn使用ShortcutsEnabled属性启用或禁用以下快捷键组合和控件的快捷菜单:CTRL + Z CTRL + E CTRL + C CTRL + Y CTRL + X CTRL + BACKSPACE CTRL + V CTRL + DELETE CTRL + A SHIFT + DELETE CTRL + L SHIFT + INSERT CTRL + R.

尝试添加e.SuppressKeyPress = true

 private void textBoxComment_KeyDown(object sender, KeyEventArgs e) { if ( e.Modifiers == Keys.Control ) { switch(e.KeyCode) { case Keys.C: case Keys.X: case Keys.V: case Keys.Z: case Keys.I: case Keys.H: e.Handled = true; e.SuppressKeyPress = true; break; default: break; } } }