我有两个ComboBoxes(它们实际上是DevExpress ComboBoxEdits,但我认为在这种情况下行为是相同的)当第一个框的索引发生变化时,我想为第二个框触发相同的事件,所以它会显示正确的相关数据。
我的问题是这部分时间完美无缺,但有时候第二次事件没有被解雇。代码看起来大致如下:
ComboBox1_SelectedIndexChanged()
{
....
ComboBox2.SelectedIndex = new_index;
}
所以我没有明确地触发ComboBox2_SelectedIndexChanged事件,而是依赖于正在更新的SelectedIndex。 那么为什么每次都没有这样的火?如果我明确设置索引,如果新索引和旧索引相同,那么不会触发事件吗?
我发现这个问题,只是部分相关,但我想根本问题可能相似(价值并不总是按预期改变?)WinForms ComboBox SelectedIndexChanged not firing when typing few chars followed by Alt+Down
谢谢, 需要对此进行一些澄清!
答案 0 :(得分:0)
我猜测的原因是因为Combobox2选择的索引恰好设置为new_index。我知道你暗示事实并非如此,但我不知道它是怎么回事。
如果你只是想让combo2设置为一个新的索引,那么indexChanged事件将会触发,这应该会让你在那里,假设组合中至少有两个项目(如果只有一个,那么,真的没办法无论如何都改变了)
ComboBox2.SelectedIndex = (ComboBox2.SelectedIndex + 1) % ComboBox2.Items.Count;
或者更好,为什么不把indexChanged事件处理程序的主体,将其粘贴到方法中,然后调用它来代替手动设置ComBox2的selectedIndex。