我在使用Windows Forms中的助记键时遇到了一些问题:
只需要一个带有按钮的窗体,使用ALT + s作为加速键:
this.searchButton = new System.Windows.Forms.Button();
this.searchButton.Text = "&search";
- 这是一个.NET问题吗?
- 如何解决这个问题?
提前致谢。
我在使用Windows Forms中的助记键时遇到了一些问题:
只需要一个带有按钮的窗体,使用ALT + s作为加速键:
this.searchButton = new System.Windows.Forms.Button();
this.searchButton.Text = "&search";
提前致谢。
protected override bool ProcessDialogChar(char charCode) {
if ((Control.ModifierKeys & Keys.Alt) == Keys.None) return false;
return base.ProcessDialogChar(charCode);
}
不能百分之百确定这种方法不会产生其他副作用,Winforms中的键盘处理相当复杂。
这是.NET的正常行为(他们说“设计如此”)。
下面的文章应该会有所帮助 - 开始时并不简单或美观,但一旦完成,您设置的任何快捷键都可以轻松添加:
将键盘加速器构建到.NET Windows窗体应用程序中 - Code Guru
基本上,这个解决方案涉及创建一个类,加载一个哈希表,并重写ProcessCmdKey来设置自己的加速器处理程序。