我在处理C#应用程序的文本框验证时遇到了一些困难。问题是,该文本框只应接受十进制值。这意味着除了“.”符号之外,不应接受任何字母或其他符号。我可以过滤字母,但我不知道如何管理文本框应接受的“.”数量。如果有人知道如何做到这一点,请给我一个想法。
非常感谢您 :)
非常感谢您 :)
decimal value;
bool isValid = decimal.TryParse(textBox.Text, out value);
if (!isValid)
{
throw new ArgumentException("Input must be a decimal value");
}
这应该可以工作!!!
修改为仅保留一位小数
private void txtType_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Back || (e.KeyChar == (char)'.') && !(sender as TextBox).Text.Contains("."))
{
return;
}
decimal isNumber = 0;
e.Handled = !decimal.TryParse(e.KeyChar.ToString(), out isNumber);
}
只是一个想法:如果您正在监视小数位,只需在控件中保留一个布尔标志,表示“我已经有了一个点”; 后续的点是无效的。
或者,在检查小数位时,您可以使用Contains
:
if (textbox.Text.Contains("."))
此外,请查看MSDN上提供的此示例(NumericTextBox):
http://msdn.microsoft.com/en-us/library/ms229644(VS.80).aspx
使用正则表达式验证:
^([0-9]*|\d*\.\d{1}?\d*)$
这个网站拥有一系列正则表达式验证库(包括数字相关),你会发现它非常有用: