C#中关于键盘按下事件,高手请进.

在窗体的KeyDown事件中怎么可以获取按下的键对应的字符?就像在KeyPress事件中的KeyChar一样.KeyDown事件中没有这个方法.有个KeyValue方法,... 在窗体的KeyDown事件中怎么可以获取按下的键对应的字符?
就像在KeyPress事件中的KeyChar一样.
KeyDown事件中没有这个方法.有个KeyValue方法,它获取的是键盘值,而不是对应的字符.

请问一下怎么可以把这个键盘值转换成对应的字符吗? 或者是在KeyDown事件中获取用户按下的键的字符..最好是可以把KeyValue获取的键盘值转换成对应的字符,我听说有一个API函数可以转换,但我不知道是什么,还请高手指教..

分不够的说一声,小弟还可以另加分,不过得要能解决问题...
另外提醒大家一下,在KeyDown事件中.KeyValue,KeyCode,KeyData获取的值不是真正的键所对应的字符.这点请大家不要弄混了..
展开
 我来答
百度网友e72012dab
2007-06-19 · TA获得超过407个赞
知道小有建树答主
回答量:492
采纳率:0%
帮助的人:494万
展开全部
哎,的确没注意到。失误。这个键盘扫描码值和字符值还不是很简单能转换的,这和系统、语言、键位分布关系密切。直接使用转换还的确不能广泛适用。该这样,知错能改,莫怪、莫怪哈。

在FORM代码文件头部添加引用:
using System.Runtime.InteropServices ;

在FROM类中添加以下API函数引用:
[DllImport("user32.dll", CharSet=CharSet.Ansi)]
private static extern int ToAscii(int uVirtKey,int uScanCode,byte[] lpKeyState,int[] lpChar,int uFlags);

[DllImport("user32.dll", CharSet=CharSet.Ansi)]
private static extern int GetKeyboardState(byte[] pbKeyState);

在KyeDown代码中按如下示例使用:
private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{byte[] kb_state=new byte [256];
int[] charbuf=new int[4];

if (GetKeyboardState(kb_state)>0)
{
if (ToAscii(e.KeyValue,e.KeyValue,kb_state,charbuf,2)>0)
{
this.Text=Convert.ToChar(charbuf[0]).ToString() ;
//正常情况只返回一个字符。也有双字符的,但第一个才是我们关心和使用的。
}
}
}
百度网友627a65d
2007-06-18 · 超过14用户采纳过TA的回答
知道答主
回答量:134
采纳率:100%
帮助的人:49.1万
展开全部
private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if(e.KeyCode == Keys.F1)
{
这里面就可以写当按下F1时,要调用的方法
}

}
e.KeyCode //获取按键事件的值
Keys.F1 //对应的按键
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b39e9a916
2007-06-18 · TA获得超过684个赞
知道答主
回答量:116
采纳率:0%
帮助的人:0
展开全部
个按键精灵就可以了啊 f
回答者:陇东吴大哥 - 千总 四级 6-18 17:12

弄个按键精灵就可以了啊
回答者:碎纸飞扬 - 举人 四级 6-18 17:12

这样可以吗?
char keyChar=char(keyValue);
回答者:hatum - 助理 二级 6-18 17:15

private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
}
事件是这样的吧?那好。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
资蔼0FD
2007-06-18 · 贡献了超过140个回答
知道答主
回答量:140
采纳率:0%
帮助的人:0
展开全部
char keyChar=char(keyValue);
private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b594014
2007-06-18 · TA获得超过406个赞
知道小有建树答主
回答量:914
采纳率:100%
帮助的人:389万
展开全部
按时
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 5条折叠回答
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式