Dot-Net
加速器(助記鍵)在不按 ALT 鍵的情況下執行
我在Windows 窗體中使用助記鍵時遇到了一些麻煩:
只需擁有一個帶有按鈕的表單,它使用 ALT+s 作為加速器:
this.searchButton = new System.Windows.Forms.Button(); this.searchButton.Text = "&search";只需按“s”(不按 ALT 鍵)即可執行按鈕操作。我檢查了其他一些應用程序,加速器操作僅在按下 ALT 鍵時執行。
- 這是.NET 問題嗎?
- 如何解決這個問題?
提前致謝。
這是 .NET 的正常行為(他們說,“設計使然”)。
這是一篇可以幫助您解決問題的文章 - 開始時並不簡單或漂亮,但一旦完成,您設置的任何快捷鍵都可以輕鬆添加:
將鍵盤加速器建構到 .NET Windows 窗體應用程序中 - Code Guru
基本上,這個解決方案包括創建一個類、載入一個雜湊表和覆蓋 ProcessCmdKey 以設置您自己的加速器處理程序。
您可以通過將此程式碼段粘貼到您的表單中來更改此行為:
protected override bool ProcessDialogChar(char charCode) { if ((Control.ModifierKeys & Keys.Alt) == Keys.None) return false; return base.ProcessDialogChar(charCode); }不是 100% 肯定這不會有其他副作用,Winforms 中的鍵盤處理很複雜,說得客氣一點。