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);
}
如问题所示,我有两个列表框。我用一个从数据库中获取 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);
}