【发布时间】:2016-11-03 05:09:36
【问题描述】:
我正在创建一个包含大量用户输入的程序。大多数用户输入将在文本框中,只需要是数字条目。
目前,我只是使用 TextChanged 方法获取值,然后根据条目显示/隐藏其他按钮/复选框。
我想创建一个方法或实现某种用途来检查输入框的时间,以防止人们进行错误输入,修复他们所做的更改,或创建一个消息框告诉他们他们的输入无效。
我目前正在使用两种方式,但它们不能相互配合。
我有一个解析方法,将输入文本转换为 Double 但我遇到的问题是,如果他们使用退格按钮然后重新输入他们的数字,它将无法识别输入(需要打开/关闭其他文本框/复选框)。这确实适用于 TextChanged 方法。
我有一个使用 PreviewTextInput 和 KeyDown 方法的正则表达式集。这在不允许某些输入时效果很好,但它不适用于 textchanged 方法(或者至少我不明白如何指向它)。
我需要一些指导,了解如何创建一种可行的方法来检查文本框中的输入,这种方法不需要我的用户为每个条目按下按钮(也就是实时检查)。
【问题讨论】:
-
这是一个 WinForms 应用程序吗?如果是,为什么不使用 NumericUpDown 控件?
-
这是在 WPF 中。我很抱歉没有具体说明。
-
这是来自 Microsoft 的示例:msdn.microsoft.com/en-us/library/ms229644(v=vs.100).aspx 您也可以考虑使用 MaskedTextBox
-
您也许可以在文本框失去焦点时验证该值。如果您需要验证输入而不要求用户离开文本框,您可能需要在每个
TextChanged事件上重置一个计时器,然后在计时器结束时运行您的验证例程。这将允许用户在击键之间有一秒钟左右的时间来完成他们的打字。 -
WPF有类似的控件stackoverflow.com/questions/382676/…
标签: c# wpf visual-studio