我在 Windows窗体中使用助记键时遇到了一些麻烦:
只需要一个带有按钮的表单,它使用ALT + s作为加速器:
this.searchButton = new System.Windows.Forms.Button();
this.searchButton.Text = "&search";
只需按“s”即可执行按钮操作(无需按ALT键)。 我检查了一些其他应用程序,加速器操作仅在按下ALT键时执行。
提前致谢。
答案 0 :(得分:5)
您可以通过将此代码段粘贴到表单中来更改此行为:
protected override bool ProcessDialogChar(char charCode) {
if ((Control.ModifierKeys & Keys.Alt) == Keys.None) return false;
return base.ProcessDialogChar(charCode);
}
不是100%肯定这不会产生其他副作用,Winforms中的键盘处理会让人感到沮丧。
答案 1 :(得分:2)
这是.NET的正常行为(他们说,“按设计”)。
这篇文章可以帮助您解决问题 - 开始时并不简单或漂亮,但一旦完成,您可以轻松添加您设置的任何快捷键:
Building Keyboard Accelerators into .NET Windows Forms Applications - Code Guru
基本上,此解决方案涉及创建类,加载哈希表以及覆盖ProcessCmdKey以设置自己的加速器处理程序。