我有一个场景,其中需要在winform的组合框中触发SelectedIndexChanged
事件,即使旧索引和新索引相同。我不能使用SelectionChangeCommited
,因为值是通过编程方式设置的,并且它不会被触发。是否有任何方法可以强制“SelectedIndexChanged”在旧索引与新索引相同时触发?
我有一个场景,其中需要在winform的组合框中触发SelectedIndexChanged
事件,即使旧索引和新索引相同。我不能使用SelectionChangeCommited
,因为值是通过编程方式设置的,并且它不会被触发。是否有任何方法可以强制“SelectedIndexChanged”在旧索引与新索引相同时触发?
你想让相同的项目重新触发事件似乎有点奇怪。这可能是因为你只想重新执行事件处理程序逻辑。为什么不将SelectionChanged逻辑提取到一个新方法中,并以编程方式调用它呢?
没有什么阻止你直接调用事件处理程序:
comboBox1_SelectedIndexChanged(comboBox1, new EventArgs()); // or (null, null)
但是atomaras
的解决方案是更好(更好看)的方法。
我个人不喜欢在比较严肃的软件中使用标准组件。相反,我从一开始就派生所有标准组件,并在需要添加功能时将其添加到组件中,而无需更改现有表单中的任何内容。
在这种情况下,我会添加一个公共事件触发器OnSelectedIndexChanged
来执行事件(以编程方式运行事件处理程序中的代码)。
combobox.selectedIndex = value;
combobox.selectedevent(null,null);