我有一个简单的WinForms应用程序,它根据输入的最大数量生成随机数。对于最大数字文本框,我已经有代码检查'按键'输入,以便数字和“。”是唯一输入的字符。因此,允许十进制数。但是,我还想检查文本框是否只包含0和“。”我的代码大纲如下所示:
if(txbInput.Text.Length == 0)
{
validation fails
}
else if(txbInput Contains just 0s and .)
{
validation also fails
}
else{
do maths
}
在'else if'语句中执行此操作的正确方法是什么?
答案 0 :(得分:10)
为什么不使用Decimal.TryParse
或Double.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,那么按下一个键后什么都不会发生。通过它你可以在文本框中压制密钥