.net WinForms-防止更改组合框-下拉列表模式

.net WinForms-防止更改组合框-下拉列表模式,.net,winforms,events,combobox,event-handling,.net,Winforms,Events,Combobox,Event Handling,在Winforms中,什么是阻止用户更改下拉列表值的正确方法? 我想提示用户说有未保存的更改。如果用户决定不放弃这些更改,我想取消组合框更改。有什么办法吗 我想我以前见过e.取消选项。但可能不在System.Windows.Forms.ComboBox上 更新: 进一步说明组合框不是数据输入表单的一部分。它被用作导航/过滤器。用户已在网格上进行了更改。我想防止他们在没有提示的情况下离开网格。在组合更改事件中保存旧值,向用户发出提示。如果他们选择继续,那就什么都不要做。如果他们选择取消并且不丢失更

在Winforms中,什么是阻止用户更改下拉列表值的正确方法? 我想提示用户说有未保存的更改。如果用户决定不放弃这些更改,我想取消组合框更改。有什么办法吗

我想我以前见过e.取消选项。但可能不在System.Windows.Forms.ComboBox上

更新
进一步说明组合框不是数据输入表单的一部分。它被用作导航/过滤器。用户已在网格上进行了更改。我想防止他们在没有提示的情况下离开网格。

在组合更改事件中保存旧值,向用户发出提示。如果他们选择继续,那就什么都不要做。如果他们选择取消并且不丢失更改,则将所选项目设置为旧值。

您可能需要使用组合框的验证事件,该事件是CancelEventHandler


我不确定我是否完全理解您的问题,但您的问题似乎与组合框没有直接关系,而是关于当用户选择不保存刚做的更改时,如何将表单重置为其原始值

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


更新:一种简单的方法是,当他们在表单上更改任何内容时,立即将组合框的Enabled属性设置为
false
,然后在保存或取消更改时再次将其设置为
true

e.cancel看起来像一个事件。订阅事件处理程序中的事件,例如TextChanged和do e.Cancel=true。请参阅更新。验证事件是否仅在您试图离开控件时触发?是的,当控件失去焦点时才会触发。