0

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

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

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

        else{
            do maths
        }

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

4

3 回答 3

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
}
于 2013-11-13T11:39:26.770 回答
1

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

于 2013-11-14T10:47:10.390 回答
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 则在按下键后不会发生任何事情。通过它,您可以在文本框中隐藏键

于 2015-05-11T20:17:32.620 回答