【解决方案1】:

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 属性的第二种形式。我很高兴它成功了。
  • 是的,感谢您的帮助