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

时间:2011-08-11 15:01:09

标签: c# validation propertygrid

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

因此自定义HourConverter:StringConverter实现了GetStandardValues,但强制GetStandardValuesExclusive为false。我希望用户能够键入小时,如果他们想要,但如果出错则会收到错误(ConvertFrom会抛出FormatException)。

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

最终发生的事情是,如果框中的值无效,则用户无法通过查看列表来纠正它,因为无论选择什么,它都会弹出更多消息,并且没有任何变化。我怎么能阻止这个?我只需要设置GetStandardValuesExclusive以返回true吗?

0 个答案:

没有答案