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

C#和箭头键共享

时间:2023-04-10 16:53:43 C#

C#和箭头键我是C#的新手,我正在现有应用程序中做一些工作。我有一个DirectX视口,其中包含我希望能够使用箭头键定位的组件。目前我正在覆盖ProcessCmdKey并捕获箭头输入并发送OnKeyPress事件。这有效,但我希望能够使用修饰符(ALT+CTRL+SHIFT)。一旦我按住修饰符并按下箭头,我正在收听的事件就不会触发。有没有人对我应该去哪里有任何想法或建议?在您覆盖的ProcessCmdKey中,您如何确定按下了哪个键?keyData(第二个参数)的值会根据按下的键和任何修改键而改变,例如,按向左箭头将返回代码37,左移将返回65573,ctrl-left131109和alt-left262181。你可以使用适当的枚举值提取修饰符和与按下的键:protectedoverrideboolProcessCmdKey(refMessagemsg,KeyskeyData){boolshiftPressed=(keyData&Keys.Shift)!=0;键unmodifiedKey=(keyData&Keys.KeyCode);//其余代码放在这里}我赞成Tokabi的回答,但为了比较键,这里有一些关于StackOverflow.com的额外建议。以下是我用来帮助简化一切的一些功能。以上就是C#学习教程:C#和方向键分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——publicKeysUnmodifiedKey(Keyskey){returnkey&Keys.}publicboolKeyPressed(Keyskey,Keystest){returnUnmodifiedKey(key)==test;}publicboolModifierKeyPressed(Keyskey,Keystest){return(key&test)==test;}publicboolControlPressed(Keyskey){returnModifierKeyPressed(key,Keys.Control);}publicboolAltPressed(Keyskey){returnModifierKeyPressed(key,Keys.Alt);}publicboolShiftPressed(Keyskey){returnModifierKeyPressed(key,Keys.Shift);}protectedoverrideboolProcessCmdKey(refMessagemsg,KeyskeyData){if(KeyPressed(keyData,Keys.Left)&&AltPressed(keyData)){intn=code.Text.IndexOfPrev('',code.SelectionEnd()+1);if(n本文整理自网络,不代表立场,如涉及侵权,请点右联系管理员删除,转载请注明出处: