如何防止 PropertyGrid 多次显示无效值消息框?

发布于 2024-11-29 06:07:59 字数 565 浏览 3 评论 0原文

在我的 propertygrid 中,我支持将“8 AM”等字符串转换为 Hour 对象的 Hour 值。它们只有 24 个可能的值,但我不想限制用户使用下拉菜单。

因此,自定义 HourConverter : StringConverter 实现 GetStandardValues,但强制 GetStandardValuesExclusive 为 false。我希望用户能够根据需要输入小时,但如果犯了错误,则会出现错误(ConvertFrom 抛出 FormatException)。

问题是:如果用户输入无效值,则会按预期弹出“属性值无效”消息框。但现在,如果我尝试通过下拉菜单获取正确的值,则触发下拉菜单时,警报框会出现一次,在我从列表中选择有效值后,警报框还会出现 2-3 次。看起来,当创建下拉列表时,会对列表中的所有字符串值调用 ConvertFrom,包括文本框中的无效字符串

最终发生的情况是,如果框中的值无效,用户根本无法通过查看列表来更正它,因为无论选择什么,都会弹出更多消息,并且不会发生任何变化。我怎样才能防止这种情况发生?我是否只需将 GetStandardValuesExclusive 设置为返回 true 即可?

In my propertygrid, I support an Hour value that converts a string like "8 AM" to an Hour object. There are only 24 possible values for them, but I don't want to restrict the user to using the drop down.

So the custom HourConverter : StringConverter implements GetStandardValues, but forces GetStandardValuesExclusive to false. I want the user to be able to type in the hour if they want to, but get an error if a mistake was made (ConvertFrom throws a FormatException).

Here is the problem: if the user enters an invalid value, the "Property Value Invalid" message box pops up as expected. But now, if I try to get the correct value through the drop down, the alert box comes up once when the drop down is triggered, and another 2-3 times after I've chosen a valid value from the list. It looks like when the drop down is created, ConvertFrom is called on all the string values in the list including the invalid one sitting in the text box.

What ends up happening is that if the value in the box is invalid, the user can't correct it at all by looking at the list, because that just pops up more messages no matter what is chosen, and nothing changes. How can I prevent this? Do I just have to set GetStandardValuesExclusive to return true?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文