CTRL-H
是 ASCII BS(退格)字符。
您可以禁用(或重新定义)它,因为 CTRL+H 和 BackSpace 并不完全相同。 this question 上列出了一些带有其他键的示例。
您需要像这样在Form1.Designer.cs
中添加KeyEventHandler
:
this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown);
并在您的Form1.cs
中添加此功能:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.H && e.Modifiers == Keys.Control)
{
//uncomment if ReadOnly is not working
//e.SuppressKeyPress = true;
textbox1.ReadOnly = true;
Form2 form2 = new Form2();
form2.Show();
textbox1.ReadOnly = false;
}
}
【讨论】:
-
谢谢你的回答,我在 Form1.Designer.cs 中找到了一个现有的 KeyEventHandler,我按照你写的那样放了 textBox1_KeyDown,但同样的问题仍然存在,按 Ctrl+H 后它打开了 Form2 并且还从 Textbox1 中删除一个字符
-
我想我找到了解决办法,我在打开Form2之前添加了你的答案textbox1.ReadOnly = true,打开后添加了textbox1.ReadOnly = false,按Ctrl后它不会删除一个字符+H
-
@Alex 可能是覆盖 SuppressKeyPress 属性的第二种形式。我很高兴它成功了。
-
是的,感谢您的帮助