C# 用数字键盘代替英文数字
我一直在使用下面的代码在运行时用阿拉伯数字替换英文数字,在一种新的形式中,我只需要数字键盘来替换数字,并保持其他一切不变 我应该使用哪个事件:按键、向上键或向下键?C# 用数字键盘代替英文数字,c#,winforms,C#,Winforms,我一直在使用下面的代码在运行时用阿拉伯数字替换英文数字,在一种新的形式中,我只需要数字键盘来替换数字,并保持其他一切不变 我应该使用哪个事件:按键、向上键或向下键? 如何检查和转换KeyCode/KeyChar,反之亦然? 最重要的是如何实现整个想法 private void ArabicNumbers_KeyPress(object sender, KeyPressEventArgs e) { switch (e.KeyChar) {
如何检查和转换KeyCode/KeyChar,反之亦然?
最重要的是如何实现整个想法
private void ArabicNumbers_KeyPress(object sender, KeyPressEventArgs e)
{
switch (e.KeyChar)
{
case '0': e.KeyChar = '٠'; break;
case '1': e.KeyChar = '١'; break;
case '2': e.KeyChar = '٢'; break;
case '3': e.KeyChar = '٣'; break;
case '4': e.KeyChar = '٤'; break;
case '5': e.KeyChar = '٥'; break;
case '6': e.KeyChar = '٦'; break;
case '7': e.KeyChar = '٧'; break;
case '8': e.KeyChar = '٨'; break;
case '9': e.KeyChar = '٩'; break;
}
}
我自己想出来的
private bool _isKeyNumPadClick;
private void TxtEdtDocNo_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
{
_isKeyNumPadClick = true;
}
else if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
{
_isKeyNumPadClick = false;
}
}
private void Numbers_KeyPress(object sender, KeyPressEventArgs e)
{
if (_isKeyNumPadClick)
{
switch (e.KeyChar)
{
case '0': e.KeyChar = '٠'; break;
case '1': e.KeyChar = '١'; break;
case '2': e.KeyChar = '٢'; break;
case '3': e.KeyChar = '٣'; break;
case '4': e.KeyChar = '٤'; break;
case '5': e.KeyChar = '٥'; break;
case '6': e.KeyChar = '٦'; break;
case '7': e.KeyChar = '٧'; break;
case '8': e.KeyChar = '٨'; break;
case '9': e.KeyChar = '٩'; break;
}
}
else
{
switch (e.KeyChar)
{
case '0': e.KeyChar = '0'; break;
case '1': e.KeyChar = '1'; break;
case '2': e.KeyChar = '2'; break;
case '3': e.KeyChar = '3'; break;
case '4': e.KeyChar = '4'; break;
case '5': e.KeyChar = '5'; break;
case '6': e.KeyChar = '6'; break;
case '7': e.KeyChar = '7'; break;
case '8': e.KeyChar = '8'; break;
case '9': e.KeyChar = '9'; break;
}
}
_isKeyNumPadClick = false;
}
private bool\u isKeyNumPadClick;
私有void TxtEdtDocNo_KeyDown(对象发送方,KeyEventArgs e)
{
if(e.KeyCodeKeys.NumPad9)
{
_isKeyNumPadClick=true;
}
否则如果(e.KeyCodeKeys.D9)
{
_isKeyNumPadClick=false;
}
}
私有无效号码\u按键(对象发送者,按键事件参数e)
{
如果(_isKeyNumPadClick)
{
开关(例如KeyChar)
{
案例“0”:e.KeyChar='٠';break;
案例“1”:e.KeyChar='١';break;
案例“2”:e.KeyChar='٢';break;
案例“3”:e.KeyChar='٣';break;
案例“4”:e.KeyChar='٤';break;
案例“5”:e.KeyChar='٥';break;
案例“6”:e.KeyChar='٦';break;
案例“7”:e.KeyChar='٧';break;
案例“8”:e.KeyChar='٨';break;
案例“9”:e.KeyChar='٩';break;
}
}
其他的
{
开关(例如KeyChar)
{
大小写“0”:e.KeyChar=“0”;break;
案例“1”:e.KeyChar='1';break;
案例“2”:e.KeyChar='2';break;
案例“3”:e.KeyChar='3';break;
案例“4”:e.KeyChar='4';break;
案例“5”:e.KeyChar='5';break;
案例“6”:e.KeyChar='6';break;
案例“7”:e.KeyChar='7';break;
案例“8”:e.KeyChar='8';break;
案例'9':e.KeyChar='9';break;
}
}
_isKeyNumPadClick=false;
}
如果您按下一个键,但仍未释放,您可以看到该字符已经出现。因此,你可能应该使用OnKeyDown。如果你把信息放在不同的down、press和up中,你会看到所有3个数字都适用,但是,你在每个阶段都有不同的选项。这并没有回答问题!