有没有一种简单的方法来提示用户确认组合框选择的更改,并在用户选择否时不进行更改处理?
我们有一个组合框,改变选择会导致数据丢失。基本上,用户选择一种类型,然后他们可以输入该类型的属性。如果他们更改了类型,我们会清除所有属性,因为它们可能不再适用。问题是,在理解选择之后,需要再次引发“SelectionChanged”事件。
这里是代码片段:
if (e.RemovedItems.Count > 0)
{
result = MessageBox.Show("Do you wish to continue?",
"Warning", MessageBoxButton.YesNo, MessageBoxImage.Warning);
if (result == MessageBoxResult.No)
{
if (e.RemovedItems.Count > 0)
((ComboBox)sender).SelectedItem = e.RemovedItems[0];
else
((ComboBox)sender).SelectedItem = null;
}
}
我有两个解决方案,但都不是很喜欢。
在用户选择了'No'之后,删除
SelectionChanged
事件处理程序,更改所选项目,然后重新注册SelectionChanged
事件处理程序。这意味着您必须在类中保留事件处理程序的引用,以便可以添加和删除它。创建一个
ProcessSelectionChanged
布尔值作为类的一部分。始终在事件处理程序的开头检查它。在我们将选择更改回来之前将其设置为false,然后在之后重置为true。这样做是可行的,但我不喜欢使用标志来基本上使事件处理程序无效。
有没有其他解决方案或对我提到的方法进行改进?
SelectionChanged
不是WinFormsComboBox
上的事件处理程序,只有WPFComboBox
才有,因此我正在编辑问题和标签以进行修复。 - Rob