我的C#應用程序中包含一個「篩選」項目的「幫助」菜單。這個項目顯示一個默認的MessageBox和一個解釋,按鈕是OK和幫助,它在MSDN中打開一個鏈接。通過F1快捷鍵打開多次C#消息框鏈接
string link = "http:...";
MessageBox.Show("explanation...", "Filtering", MessageBoxButtons.OK,
MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, 0, link);
通過項目打開消息並通過「幫助」按鈕打開鏈接即可。
問題:
我添加了「過濾」(F1)的快捷鍵。現在當我在應用程序中按F1時,不僅打開消息框和鏈接,它會打開鏈接2或3次。
行爲是這樣的:
- 點擊該項目仍然正常工作。
- 第一次打開應用程序時按F1鍵 - 鏈接會自動打開3次(同一頁的3個選項卡)。
- 下次按F1(關閉消息框後) - 鏈接會自動打開2次。
問題是關於使用F1,因爲它也是盒子中幫助按鈕的關鍵,但它仍然不能解釋爲什麼在剛剛打開的盒子中出現關鍵事件,以及爲什麼鏈接打開2或3次。我檢查了:
- 消息框打開一次。
- 創建並打開消息框的代碼運行一次 - 當我按下F1時。
- 將快捷鍵更改爲F10或其他內容可以防止出現問題,但我想使用F1作爲標準幫助快捷方式。
任何人都可以想出一種方法來解決這個問題嗎?即使鏈接只打開一次,我也沒有問題。
打開請顯示你的F1事件的處理程序代碼。現在你讓我們猜測這個問題。但是,確保在處理事件後取消事件以防止它冒泡到其他處理程序。 – 2014-12-03 14:05:13
@PaulSasik'this.FilteringToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F1;'併發送到我發佈的代碼的點擊處理程序。 – 2014-12-03 14:10:54
重要事件的事件處理程序會長時間觸發多次,這取決於您在Windows中的驅動程序和鍵盤設置,但是如果您持續「f」一段時間,則會出現「fffffffffffffffff」。這與F1鍵是一樣的。 修復問題的最簡單方法是在MessageBox關閉之前使事件處理程序「阻止」程序執行。其次是扼制F1事件處理程序方法(通過將上次執行的時間存儲在類級別變量中,防止它每秒被調用一次以上) – 2014-12-03 14:46:39