2013-02-08 41 views
0

方案:我已經創建了一個表單(Mainform),它是應用程序的父表單或主機形式(如Outlook中的主屏幕)。允許通過父表單處理快捷鍵

我創建了一個BarItem(幫助)菜單欄項目下並分配一個快捷鍵使用快捷方式屬性F1

但是,如果Mainform以外的其他任何形式獲得焦點,則快捷鍵不會達到Mainform。我該如何解決這個問題?

我無法承受從我的Mainform正在啓動的所有表單的訂閱按鍵事件。

類似的情景:例如,當你走在Microsoft Outlook任何窗口,然後按F1,它會不管推出形式存在opened.I希望類似的行爲的一個幫助窗口。

+0

消息過濾器的例子只是試圖創建一個捷徑,你創建的所有形式。 – spajce

+0

@spajce:快捷方式屬性與ParentForm中的私有控件BarItem相關聯。如何從所有表單創建快捷方式以重定向到ParentForm? – Rockstart

+0

你可以顯示你的代碼處理父窗體上的事件嗎? –

回答

1

在MainForm的(父窗體,如果你會)確保財產KeyPreview設置爲true

+0

KeyPreview設置爲true。但它沒有幫助。 – Rockstart

1

你可以做到這一點,因爲我從我的評論指出,只要使用KeyUp Event所有的Form和屬性是必須KeyPreview = true

private void Form1_KeyUp(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.F1) 
     { 
      //do stuff 
     } 
    } 
+0

我已經有超過200個子窗體將從ParentForm啓動。我很難在所有的類中引入這些代碼。 – Rockstart

+0

如何創建基類並重寫Keyup事件以及所有子窗體將從此基類派生。 – Rockstart

+0

你可以試試。但我想這似乎很難,但你可以嘗試。 – spajce