加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

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

发布时间:2021-01-17 23:16:55 所属栏目:Windows 来源:网络整理
导读:我想创建一个组件,允许我们复合键盘快捷键与任意命令相关联,如Visual Studio IDE和Microsoft Office. 也就是说,键盘快捷键由多个按键序列组成,例如Ctrl W C.在Visual Studio中,这将打开类视图.当按下第一组键(Ctrl W)时,状态栏中出现消息“(Ctrl W),等待和

我想创建一个组件,允许我们复合键盘快捷键与任意命令相关联,如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事件(传递让您到达该点的笔触链)或调用存储在叶子中的回调.每当没有按键与小孩匹配时,重新设置为使根节点处于活动状态.

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

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读