C# 如何使用 MultiSimple 作为 SelectionMode 同步两个 Lisboxes

C# How to sync Two Lisboxes with MultiSimple as SelectionMode

如问题所示,我有两个列表框。我用一个从数据库中获取 ID,另一个向用户显示相关信息。

我一直在将它用于其他表格,例如:

int IDIndex = Listbox1.SelectedIndex;
ListBox2.SelectedIndex = IDIndex;

如果 ListBox1 选择了多个项目,我该怎么做?

@Edit:以下代码是我为此使用的代码。也检查@Pikoh 的回答

Boolean IndexChanged = false;
int IDIndex = -1;
foreach(int ind in ListBox1.SelectedIndices)
{
    if (!ListBox2.SelectedIndices.Contains(ind)) {
        ListBox2.SetSelected(ind, true);
        //Index Selected: ind
        IDIndex = ind;
        IndexChanged = true;
    }
}
if (!IndexChanged)
{
    foreach (int ind in ListBox2.SelectedIndices)
    {
        if (!ListBox1.SelectedIndices.Contains(ind))
        {
            ListBox2.SetSelected(ind, false);
            //Index Deselected: ind
            IDIndex = ind;
            IndexChanged = true;
        }
    }
}

这让我知道更改了哪个索引。我的程序必须知道这一点才能检查数据库中的相关信息。

您可以使用 SelectedIndices 集合。然后,您可以执行以下操作:

if (Listbox1.SelectedIndices.Count>0)
{
     IDIndex = Listbox1.SelectedIndices[0];
}

IDIndex = this.listBox1.SelectedIndices.Cast<int>().First();

或者您可以在集合上循环。这取决于您想要的行为。这个答案假设一个 Winforms Listbox

编辑 如果你想在 Listbox2 中复制 Listbox1 的选定索引,你可以这样做:

Listbox2.ClearSelected();
foreach (int ind in Listbox1.SelectedIndices)
{
     Listbox2.SetSelected(ind, true);
}