我需要能够在ComboBox中输入文字而不触发SelectionChanged事件。

3
我有一个ComboBox,它作为一组配置文件的列表。当用户单击下拉列表并选择配置文件时,它会加载基于该配置文件的设置。我希望用户能够修改设置并将其保存为自己的配置文件。为此,我希望他们通过在ComboBox中键入名称来命名其配置文件。问题是,在键入过程中,SelectionChanged事件会触发,导致加载任何相似名称的配置文件。我需要用户能够在不选择任何项目的情况下键入ComboBox。或者,当用户通过在下拉框上点击选项来选择项目时,才触发SelectionChanged事件的代码。
1个回答

1

您可以在代码后台定义一个本地的布尔变量m_dontHandleSelection,并在更新组合框之前将其设置为true。

这样,您就可以在SelectionChanged处理程序中检查它,并在不执行任何操作的情况下返回,除了将布尔值设置为false。


1
谢谢!那是一个超级简单的解决方案。不知道为什么我没想到。我将bool变量设置为true,每次ComboBox的KeyDown事件被触发时,这样即使SelectionChanged事件仍然会被触发,我也可以测试并且只在bool为false时运行我的代码。然后我可以在SelectionChanged事件结束时再次将bool设置为false,这样用户仍然可以从列表中选择配置文件,即使在键入过程中改变了主意并选择了其他配置文件。(例如,如果他们开始输入配置文件名称,但改变了主意并选择了其他配置文件) - morphinapg
糟糕,我突然想到一个问题。如果用户输入的内容不会触发SelectionChanged事件,因为它只有在文本部分匹配下拉框中的某一项时才会触发。那么布尔值将被设置为true,用户将无法从下拉列表中选择项目。 - morphinapg
我想通了。在 KeyUp 事件中将 bool 设置为 false。 - morphinapg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接