KeyPress 事件给出了错误的值
KeyPress Event gives wrong value
我做了一个 KeyPress 事件并希望只允许双精度值(或只允许数字和逗号)所以我尝试了这个:
e.Handled = !(char.IsNumber(e.KeyChar) || e.KeyChar == (char)Keys.Back || e.KeyChar == (char)Keys.Decimal);
但不知何故,他在 "Decimal" 上遇到了问题。我正在使用德语键盘,当我尝试输入逗号时,他什么也没做。当我按下 "n" 键时,他写了这封信。这里有什么问题以及如何解决?
您可以像这样使用 keyPress
事件限制输入:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
char c= e.KeyChar;
if (!char.IsDigit(c) && !char.IsControl(c))
{
e.Handled = true;
}
}
如果我们想扩展我们的限制条件以接受某个字符(例如,
)
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
char c= e.KeyChar;
if (!char.IsDigit(c) && !char.IsControl(c) && c!=',')
{
e.Handled = true;
}
}
为了避免像 222,34545,454
这样的多个逗号,我们可以解决这个问题:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
char c= e.KeyChar;
bool comma= textBox1.Text.Contains(','); //true in case comma already inserted
// accepts only digits, controls and comma
if (!char.IsDigit(c) && !char.IsControl(c) && c!=',')
{
e.Handled = true;
return;
}
// whenever a comma is inserted we check if we already have one
if (c == ',' && comma)
{
e.Handled = true;
}
}
我做了一个 KeyPress 事件并希望只允许双精度值(或只允许数字和逗号)所以我尝试了这个:
e.Handled = !(char.IsNumber(e.KeyChar) || e.KeyChar == (char)Keys.Back || e.KeyChar == (char)Keys.Decimal);
但不知何故,他在 "Decimal" 上遇到了问题。我正在使用德语键盘,当我尝试输入逗号时,他什么也没做。当我按下 "n" 键时,他写了这封信。这里有什么问题以及如何解决?
您可以像这样使用 keyPress
事件限制输入:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
char c= e.KeyChar;
if (!char.IsDigit(c) && !char.IsControl(c))
{
e.Handled = true;
}
}
如果我们想扩展我们的限制条件以接受某个字符(例如,
)
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
char c= e.KeyChar;
if (!char.IsDigit(c) && !char.IsControl(c) && c!=',')
{
e.Handled = true;
}
}
为了避免像 222,34545,454
这样的多个逗号,我们可以解决这个问题:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
char c= e.KeyChar;
bool comma= textBox1.Text.Contains(','); //true in case comma already inserted
// accepts only digits, controls and comma
if (!char.IsDigit(c) && !char.IsControl(c) && c!=',')
{
e.Handled = true;
return;
}
// whenever a comma is inserted we check if we already have one
if (c == ',' && comma)
{
e.Handled = true;
}
}