Dot-Net

加速器(助記鍵)在不按 ALT 鍵的情況下執行

  • July 18, 2014

我在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 中的鍵盤處理很複雜,說得客氣一點。

引用自:https://stackoverflow.com/questions/8593892