我在C#/ .NET中有一個Windows應用程序。我需要製作一些鍵盤快捷鍵以在不同的表單之間導航。如何在.NET中創建鍵盤快捷鍵?如何在.NET中製作鍵盤快捷鍵
5
A
回答
5
您可以使用P/Invoke至register a global hotkey on the system。如果你不想要全局的東西,你可以隨時處理所有表單中的KeyPress事件。
0
您可以處理Control.KeyPress事件並檢查組合鍵,使鍵盤快捷鍵:
4
我假設你想實現Control ?
式快捷鍵喜歡的方式複製和粘貼的工作?
您可以創建附加到每個表單的通用KeyDown
和KeyUp
處理程序。每當你得到一個KeyDown
存儲在一個列表中的密鑰(以解釋按住一個鍵並擊中另一個鍵)。每次將密鑰添加到列表中時,請檢查列表是否包含您的任何快捷鍵組合。如果這樣執行你需要的任何代碼。
每KeyUp
事件,確保你從列表中刪除(你只需要檢查的快捷方式上KeyDown
增加
編輯:做了快速搜索,發現此相同的解決方案來實現:
class KeyboardShortcuts
{
public static void Window_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (m_keysDownList.Contains(e.Key) == false)
{
m_keysDownList.Add(e.Key);
Debug.WriteLine(e.Key.ToString() + " Down");
}
CheckForKeyCombos();
}
public static void Window_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
m_keysDownList.Remove(e.Key);
Debug.WriteLine(e.Key.ToString() + " Up");
}
public static void CheckForKeyCombos()
{
if (m_keysDownList.Contains(System.Windows.Input.Key.LeftCtrl))
{
if (m_keysDownList.Contains(System.Windows.Input.Key.A))
{
if (m_keysDownList.Contains(System.Windows.Input.Key.C))
{
// Clear list before handeling (Dialogue boxes
// can hinder the listening for key up events, leaving
// keys in list - so clear first).
ClearKeysDownList();
// Handle Ctrl + A + C Combo
HandleCtrlACCombo();
}
}
}
}
private static void ClearKeysDownList()
{
m_keysDownList.Clear();
}
public static void HandleCtrlACCombo()
{
if (handleCtrlACComboDelegate != null)
{
handleCtrlACComboDelegate();
}
}
// Need a delegate instance for each combo
public delegate void HandleCtrlACComboDelegate();
public static HandleCtrlACComboDelegate handleCtrlACComboDelegate;
private static List<System.Windows.Input.Key> m_keysDownList = new List<System.Windows.Input.Key>();
}
你可以看到完整的解決方案,這是從here引用(只是滾動到頁面底部,因爲它是在我們不說話的那名邪惡的網站。
1
這樣的事情通常使用windows掛鉤完成。這裏是展示如何與他們合作的MSDN文章:
0
如果你的父窗體具有用戶選擇打開子表單按鈕或菜單,您可以通過添加符號添加一個非常簡單的熱鍵&
添加到.Text屬性。
例如,如果您有一個按鈕,如Options
,則可以按如下方式更改其文本:&Options
。這樣做會使Alt + O激活父窗體中的按鈕。
或者,如果你想熱鍵如按Ctrl + Ø打開一個表格,你必須訂閱主窗體的KeyDown
事件,並查找組合鍵:
private void FormMain_KeyDown(object sender, KeyEventArgs e)
{
if (ModifierKeys == Keys.Control && e.KeyCode == Keys.O))
// open form
}
請注意,您可能需要將表單的KeyPreview
屬性設置爲True。
最後,工具條菜單項有一個屬性ShortcutKeys
,您可以在屬性面板中定義屬性,VS會自動將所需的代碼添加到Designer文件以支持通過鍵盤快捷方式激活菜單項。
0
步驟編號1設置
KeyPreview = True;
步驟二
if (e.Alt && e.KeyCode == Keys.C)
{
//your function
}
相關問題
- 1. 鍵盤快捷鍵
- 2. 如何爲鍵盤快捷鍵/熱鍵製作別名?
- 3. 鍵盤快捷鍵在MDI
- 4. 鍵盤快捷鍵強制508符合
- 5. 如何編程android鍵盤快捷鍵
- 6. 如何修改aquamacs鍵盤快捷鍵
- 7. 禁用鍵盤快捷鍵
- 8. JButton鍵盤快捷鍵
- 9. 聽鍵盤快捷鍵(c#)
- 10. 實現鍵盤快捷鍵
- 11. 鍵盤快捷鍵表格
- 12. Python鍵盤快捷鍵
- 13. 使用鍵盤快捷鍵
- 14. WebBrowser鍵盤快捷鍵
- 15. iPhone/iPad鍵盤快捷鍵?
- 16. TextMate的鍵盤快捷鍵?
- 17. 在PRAAT中添加鍵盤快捷鍵
- 18. SQL Server Management Studio中執行快捷鍵和鍵盤快捷鍵
- 19. 如何在所有瀏覽器中製作Javascript鍵盤快捷鍵
- 20. 調用鍵盤快捷鍵,一鍵
- 21. 在Windows上調整鍵盤快捷鍵
- 22. 「純」MVVM中的MenuItem鍵盤快捷鍵?
- 23. Access 2003中的鍵盤快捷鍵
- 24. Eclipse中的鍵盤快捷鍵Oxygen
- 25. 禁用GTKTreeView中的鍵盤快捷鍵
- 26. Mac OSX中的Eclipse鍵盤快捷鍵
- 27. visual studio 2015中的鍵盤快捷鍵
- 28. WPF中的鍵盤快捷鍵
- 29. Eclipse中的鍵盤快捷鍵
- 30. WebForms中的鍵盤快捷鍵
請展開你的答案。 – 2013-01-13 22:59:06