我一直在使用以下代码在运行时用阿拉伯数字替换英语数字,在一种新形式中,我只需要数字键盘即可替换数字并保持其他所有状态。
我应该使用哪个事件:KeyPress,KeyUp或KeyDown?
如何检查和转换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;
}
}
答案 0 :(得分:2)
我自己弄清楚了
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;
}