文本框仅包含某些字符C#

时间:2013-11-13 11:35:13

标签: c# winforms textbox

我有一个简单的WinForms应用程序,它根据输入的最大数量生成随机数。对于最大数字文本框,我已经有代码检查'按键'输入,以便数字和“。”是唯一输入的字符。因此,允许十进制数。但是,我还想检查文本框是否只包含0和“。”我的代码大纲如下所示:

            if(txbInput.Text.Length == 0)
        {
            validation fails
        }

        else if(txbInput Contains just 0s and .)
        {
            validation also fails
        }

        else{
            do maths
        }

在'else if'语句中执行此操作的正确方法是什么?

3 个答案:

答案 0 :(得分:10)

为什么不使用Decimal.TryParseDouble.TryParse

decimal d;
if(!decimal.TryParse(txbInput.Text, out d))
{
    // validation fails, output an appropriate message to the user
}
else if (d == 0m)
{
    // validation fails, output an appropriate message to the user
}

答案 1 :(得分:1)

尝试使用NumericUpDown控件而不是TextBox。除了将 Value 属性与零进行比较之外,这将消除代码中的验证和解析 备注:要使用此控件编辑实数,请为属性 DecimalPlaces 增量设置适当的值。

答案 2 :(得分:0)

你可以使用KeyPressEvent ... 像

 private void tb1_KeyPressed(object o,KeyPressEvents e)
 {
     if(/*insert your validation here*/)
     {//valid case
       e.Handled=false;
     }
     else
     {//false case
       e.Handled=true;
       //inform user about mistake
     }
 }

如果你设置Handled = true,那么按下一个键后什么都不会发生。通过它你可以在文本框中压制密钥