C# 在多个列表框上选择相同的索引

C# Selecting same index on multiple listBox

好的,所以我有四个 listBox 控件。当单击其中任何一个项目时,我想 select 所有四个列表框上的相同索引。值得一提的是,我有时会在程序中更改索引。我尝试使用一种方法 listSelectChange (int index) 并为每个 listBox 添加一个 selectIndexChange 事件,但它会激活该事件,即使 select 是由程序而不是由用户控制生成的.

请不要使用类,用暴力的方法就好了!

您可以在更新 ListBox 之前取消订阅 selectedIndexChanged,然后立即重新订阅。这是一种常见的做法。

因为你没有给出代码示例,我在这里做一些猜测。

// Enumerable of all the synchronized list boxes
IEnumerable<ListBox> mListBoxes = ...
...
public void OnSelectedIndexChanged(object sender, EventArgs e) {
    var currentListBox = (ListBox)sender;

    // Do this for every listbox that isn't the one that was just updated
    foreach(var listBox in mListBoxes.Where(lb => lb != currentListBox)) {
        listBox.SelectedIndexChanged -= OnSelectedIndexChanged;
        listBox.SelectedIndex = currentListBox.SelectedIndex;
        listBox.SelectedIndexChanged += OnSelectedIndexChanged;
    }
}