我制作了一个KeyPress事件,并且只想允许Double值(或只是数字和逗号),所以我尝试了这个:
e.Handled = !(char.IsNumber(e.KeyChar) || e.KeyChar == (char)Keys.Back || e.KeyChar == (char)Keys.Decimal);
但不知怎的,他有“十进制”的问题。我正在使用德语键盘,当我尝试输入逗号时,他什么也没做。当我按下“n”键时,他写了这封信。这里有什么问题以及如何解决这个问题?
答案 0 :(得分:0)
您可以使用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;
}
}