DxC*_*xCK 7 .net c# controls char keydown
处理Control.OnKeyPress事件时,有一个KeyPressEventArgs包含a KeyChar.
出于可用性原因,我需要完全相同KeyChar但处理OnKeyDown事件时.
在KeyEventArgs不包含任何字符有关的数据.我的意思是,如果A按键有或没有Shift影响KeyCode,KeyData或者KeyValue.使用另一种语言时,我仍然可以获得资本英语价值.
如何获得KeyPressEventArgs.KeyChar内部KeyDown活动?
谢谢.
转换它.这是将'A'转换为'a'的简单功能.它只转换[AZ]集中的大写字母.值32在"A"和"a"之间是差值.当然,您可以将其扩展到您的要求,或在此处询问功能.
char getChar( KeyEventArgs e )
{
int keyValue = e.KeyValue;
if ( !e.Shift && keyValue >= (int) Keys.A && keyValue <= (int) Keys.Z )
return (char)(keyValue + 32);
return (char) keyValue;
}
Run Code Online (Sandbox Code Playgroud)
如果你需要它来使用当前的文化,你应该重写ProcessKeyMessage控制方法:
protected override bool ProcessKeyMessage( ref Message m )
{
if ( ( m.Msg == 0x102 ) || ( m.Msg == 0x106 ) ) // this is special - don't remove
{
char c = (char) m.WParam; // here is your char for OnKeyDown event ;)
}
return base.ProcessKeyMessage( ref m );
}
Run Code Online (Sandbox Code Playgroud)
希望它有用.