文本框验证-C#

文本框验证-C#,c#,winforms,validation,textbox,C#,Winforms,Validation,Textbox,我的C#应用程序的文本框验证非常困难。问题是,所说的文本框应该只接受十进制值。所以它的意思是,除了“.”符号之外,不应该有字母或任何其他符号。字母过滤器,我能处理。但是,我不知道如何才能过滤textbox应该接受的“.”数。如果有人知道怎么做,请给我一个主意 非常感谢:)只是想一想:如果你在监视小数点,只需在你的控件中保留一个布尔标志,上面写着“我已经有一个点”;后续点无效 或者,在检查小数位时,可以使用Contains: if(textbox.Text.Contains(“.”) 此外,请查看

我的C#应用程序的文本框验证非常困难。问题是,所说的文本框应该只接受十进制值。所以它的意思是,除了“.”符号之外,不应该有字母或任何其他符号。字母过滤器,我能处理。但是,我不知道如何才能过滤textbox应该接受的“.”数。如果有人知道怎么做,请给我一个主意


非常感谢:)

只是想一想:如果你在监视小数点,只需在你的控件中保留一个布尔标志,上面写着“我已经有一个点”;后续点无效

或者,在检查小数位时,可以使用
Contains

if(textbox.Text.Contains(“.”)

此外,请查看MSDN(NumericTextBox)上提供的此示例:

这应该行得通

只修改了一个小数点

    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);
    }
使用正则表达式验证:

^([0-9]*|\d*\.\d{1}?\d*)$
此站点有一个正则表达式验证库(包括与数字相关的),您会发现它非常有用:


改用掩码文本框,并将掩码设置为仅接受小数。

这正是我现在可以做的。但是,这不会过滤文本框应接受的小数点数量。它仍然接受2个小数点:(这正是我需要的dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd。等待我不能用退格键?呵呵。@Kim小心,但这不是本地化的-有些国家使用逗号表示小数点。@Adam,是的,我知道,但我正在开发的这个软件只是我班上的一个小练习。谢谢提醒:)修改了它,因为它是整数而不是小数。。。我的错。。。但是它应该可以工作,你也可以给hanlde添加一些逻辑负号符号是的,我已经看到了,这就是我学习如何限制文本框中的字母和一些符号的地方。然而,我要寻找的是一种限制文本框只接受一个小数点的东西。数字文本框示例为+1。它仍然需要“我已经有一个十进制分隔符”标志,正如你所建议的那样。@Kim我解释了一个简单的标记方法。当检测到小数点时,将标志设置为true,在后续检测时,您的行为就好像它无效一样。可本地化、可理解、+1可这是我的应用程序以前所做的。然而,我避免了大量的错误消息弹出。所以我只想对文本框进行过滤。不过还是要谢谢你:)我很感激。呵呵
decimal value;
bool isValid = decimal.TryParse(textBox.Text, out value);

if (!isValid)
{
    throw new ArgumentException("Input must be a decimal value");
}