.net – 如何在Windows窗体应用程序中创建复合键盘快捷键?

前端之家收集整理的这篇文章主要介绍了.net – 如何在Windows窗体应用程序中创建复合键盘快捷键?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想创建一个组件,允许我们复合键盘快捷键与任意命令相关联,如Visual Studio IDE和Microsoft Office.

也就是说,键盘快捷键由多个按键序列组成,例如Ctrl W C.在Visual Studio中,这将打开类视图.当按下第一组键(Ctrl W)时,状态栏中出现消息“(Ctrl W),等待和弦的第二个键”.

为了回答键盘和弦的问题,我不相信现在有一个现成的选项可供你使用.

但是,它应该是简单的模型.我会创建一个单一的类,或者KeyboardChordProvider.在表单层面需要知道键盘事件.如其他地方所述,Form.KeyPreview属性必须为true.该供应商可能已经足够订阅Form.KeyPress事件.如果您在表单中传递,您可以在提供程序的构造函数中执行所有这些操作.

您需要注册提供商的潜在击键.

内部这个实例将跟踪当前的状态.每当观察到代表和弦的第一个键的击键时,您将更新提供者的状态并引发事件,以便用户可以设置文本:(CTRL W)被按下.等待和弦的第二个关键

如果下一个击键与潜在的次要选项匹配,那么您可以进行匹配,并且可以提出包含输入的笔画细节的ChordPressed事件.或者,您可能只是在和弦注册调用给予提供程序的特定回调(以避免在ChordPressed事件处理程序中使用switch语句或其他调度).

如果在任何时候,击键与潜在的下一个选项不匹配,那么您将重置提供者的状态.

在提供者内部,您可以使用树结构对可能的按键进行建模.提供者的当前状态只是一个特定的树节点.开始时,根节点将处于活动状态.如果一个孩子匹配击键,那么它将成为当前节点,预期下一个笔划.如果孩子是一个叶节点,那么整个和弦已经匹配,并且您将提高ChordPressed事件(传递让您到达该点的笔触链)或调用存储在叶子中的回调.每当没有按键与小孩匹配时,重新设置为使根节点处于活动状态.

我认为这个设计会达到你想要的目的.

猜你在找的Windows相关文章