当前位置: 首页 > 编程语言 > C#

通过ProcessCmdKey捕获密钥序列分享

时间:2023-04-10 22:12:24 C#

C#学习教程:通过ProcessCmdKey捕获键序列我想做的是模仿ReSharper的快捷方式处理,用户按住控制键,然后按R、M打开重构对话框。我找到了很多关于捕获键加修饰符组合的参考资料,但顺序不多。C#中存在捕获多个键,但它使用KeyDown事件。还有一些关键的挖掘示例,例如http://www.codeproject.com/KB/system/simple_key_log.aspx,它捕获所有内容并使用本机调用。我可以扩展我的ProcessCmdKey来处理键序列,还是我需要寻找其他地方?由于我在ProcessCmdKey中捕获了很多快捷方式,如果可能的话,我宁愿不必重新开始谢谢要实现您想要的,您只需跟踪KeyPress事件的顺序。您可以创建一个类来跟踪在ProcessCmdKey中按下的最后一个组合键。如果该特定组合与映射命令不匹配,但它是序列的第一个元素,则可以将其存储在类中。然后,下次激活ProcessCmdKey时,将检查新的KeyPressTracker类以确定序列是否已启动。如果是,它会检查新按下的组合键是否是您指定的组合的第二个元素。请参见下面的伪代码示例:步骤1:激活ProcessCmdKey。组合键是Ctrl+R,它与您要处理的命令不匹配,但它是您要使用的序列的第一个元素(Ctrl+R+M)。第2步:将此按键存储在您创建的新类中以跟踪最后一次按键。KeyPressTracker.Store(KeyCode,Modifiers);第三步:第二次激活ProcessCmdKey。这次,组合键是Ctrl+M,这不是我们要查找的键,而是序列的第二个元素。我们使用新的KeyPressTracker类检查最后存储的按键。这将允许您匹配“序列”,例如Ctrl+R和Ctrl+M。C#学习教程:通过ProcessCmdKey捕获按键序列就到此分享,如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——varlastKeyPress=KeyPressTracker.GetLastKeyPress();if(lastKeyPress=="Ctrl+R"&¤tKeyPress=="Ctrl+M"){//显示Refactor对话框}本文收集自网络,不代表立场,如涉及侵权,请点击有权联系管理员删除。如需转载请注明出处: