WinForms - 防止更改ComboBox - DropDownList模式

时间:2009-09-23 20:54:32

标签: .net winforms events combobox event-handling

在Winforms中,什么是阻止用户更改DropDown值的正确方法? 我想提示用户说有未保存的更改。如果用户决定不丢弃这些更改,我想取消组合框更改。关于如何做到这一点的任何想法?

我以前曾见过e.Cancel选项。但也许不在System.Windows.Forms.ComboBox。

更新: 进一步解释ComboBox不是数据输入表单的一部分。它被用作导航/过滤器。用户已在网格上进行了更改。我希望防止它们在没有提示的情况下导航离开网格。

3 个答案:

答案 0 :(得分:2)

我不确定我是否完全理解您的问题,但似乎您的问题与ComboBox没有直接关系,而是在用户选择不保存时,如何将表单重置为原始值他们刚刚做出的改变。

据推测,您的表单中有一个方法可以从某种数据结构中的值加载控件(可能是ORM对象或DataRow)。将表单重置为其原始(预编辑)值的最简单方法是使用原始(未更改的)数据结构再次调用该方法。

更新:好吧,一个简单的方法是将ComboBox的Enabled属性设置为false,只要它们更改表单上的任何内容,然后将其设置为{{ 1}}一旦他们保存或取消他们的更改。

答案 1 :(得分:1)

在组合更改事件中保存旧值,将提示提供给用户。如果他们选择继续,那么不要做任何事情。如果他们选择取消而不会丢失更改,则将所选项目设置为旧值。

答案 2 :(得分:1)

您可能希望使用组合框的Validating事件,即CancelEventHandler。

MSDN: Control.Validating event