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