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

获取Control.KeyDown上的字符?Share

时间:2023-04-11 00:39:28 C#

在Control.KeyDown上获取字符?在处理Control.OnKeyPress事件时,有一个包含KeyChar的KeyPressEventArgs。出于可用性原因,我需要完全相同的KeyChar,但在处理OnKeyDown事件时。KeyEventArgs不包含任何与字符相关的数据。我的意思是,无论是否按Shift键按下A键,它都不会影响KeyCode、KeyData或KeyValue。使用另一种语言时,我仍然获得大写英语值。如何在KeyDown事件中获取KeyPressEventArgs.KeyChar?谢谢。转换它。这是将“A”转换为“a”的简单函数。它只转换[A-Z]集中的大写字母。值32是“A”和“a”之间的差值。您当然可以将此扩展到您的要求,或在此处请求功能。chargetChar(KeyEventArgse){intkeyValue=e.KeyValue;if(!e.Shift&&keyValue>=(int)Keys.A&&keyValue如果你需要它使用当前的文化,你应该覆盖ProcessKeyMessage控制方法:protectedoverrideboolProcessKeyMessage(refMessagem){if((m.Msg==0x102)||(m.Msg==0x106))//这是特殊的-不要删除{charc=(char)m.WParam;//这是OnKeyDown事件的字符;)}返回base.ProcessKeyMessage(refm);}希望能帮助到你。我认为您正在寻找的实际上是KeyCode属性。privatevoidtextBox1_KeyDown(objectsender,System.Windows.Forms.KeyEventArgse){//判断输入的键是否为F1键。如果是,则显示帮助。if(e.KeyCode==Keys.A){//Dosomethingkewl}elseif(e.KeyCode==Keys.B){//Dosomethingevenkewler}}如果你只是在寻找某些键,你可以设置switch语句或任何你想要的。如果您想使用KeyDown而不是KeyPress的原因是为了捕获提供给KeyDown事件的额外信息,您能否在KeyDown事件中捕获该额外信息,然后在获取KeyPress时使用它?相反,这是一个很好的方法,但我不确定任何其他方法是否真的适用于具有“死键”(即产生单个字符的双键序列)的键映射。我不知道为什么Microsoft没有将更多信息传递给KeyPress事件(或很多事件,因为这个问题)因为尝试匹配因果事件并不完美,但我真的不知道更好的选择。以上就是C#学习教程:GetthecharonControl.KeyDown?如果分享的所有内容对您有用,需要了解更多C#学习教程,希望您多多关注---本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: