我在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