C#计算器文本输入验证

时间:2013-07-21 11:30:05

标签: c# .net winforms validation

我目前正在编写计算器应用程序。这个应用程序的一部分是一个简单的计算器,其工作方式类似于Windows中的计算器(使用Windows 8)。它可以解析在文本框中输入的数字。但是,如果用户没有输入正确的格式,例如5 * * 5,则会出错。我希望它检查之前输入的字符,看看它是否是一个操作符,如果是,请将其替换为5 * / 5,以便在用户输入时变为5/5。此外,它还需要检查括号是否正确,如()或()不是)(。另一件需要检查的是输入的数字只有一个小数点。例如,4.38585 + 5.32948我已经将关键条目仅限于数字和运算符。我已经检查了一段时间了,但还没有看到任何解决方案。

1 个答案:

答案 0 :(得分:1)

如果您要允许用户输入表达式,然后让他按下“计算”按钮,那么您不应该动态验证。让用户犯错误,因为无论如何他都会犯。用户将希望返回并编辑他输入的文本。您的编辑规则将难以或不可能。或者更糟,不一致。

例如,假设用户输入4.35*7.29

然后他意识到他想要分裂。但是您的编辑规则不允许他删除*,因为这会导致无效的号码。并且他无法先输入/然后删除,因为这样做会产生/**/,这两者都无效。您是否要在编辑时允许临时无效表达式,但在用户键入时不允许它?这将是不一致的,并且不会阻止您的评估者再次进行错误检查并通知用户。

如果您愿意,可以将键击限制为数字和运算符,但不要尝试验证用户输入的形式。让他输入**)9(如果他想要的话。在你解析时处理错误 - 在用户按下计算按钮之后。

现在,如果您的应用程序像Windows计算器一样工作,因为当用户输入值和运算符时,它会保持运行总计,这是另一回事。但你所谈论的只是令人沮丧。我当然不想使用它。