C#如何在取消选择最后一项时阻止ListBox选择第一项

时间:2017-07-05 17:42:29

标签: c# listbox selection

C#如何在MultiSimple选择模式下阻止ListBox自动选择第一个项目,当你取消选中框中最后一个选中的项目时 - 只有当我自己的类对象表示列表框时才会发生,并且当它表示时一切正常字符串对象。日Thnx!

2 个答案:

答案 0 :(得分:1)

似乎跟踪列表的顺序是最重要的部分。我建议也许做一个结构数组。您可以使此结构包含您想要的任何内容,例如:

struct itemList
{
    public string itemName;
    public int itemIndex;
    //include whatever other variables that you need included in here.

}

另外,请确保将结构放在命名空间之前。然后,使结构的数组看起来像这样:

itemList[] items1 = new itemList[listBoxName.SelectedItems.Count];

然后,您需要做的就是在重新排序listBox

之前将项添加到数组中
for (int i = 0; i < listBoxName.SelectedItems.Count; i++)
   {
        items1[i].itemName = listBoxName.SelectedItems[i].ToString();
        items1[i].itemIndex = listBoxName.SelectedIndices[i];
   }

答案 1 :(得分:0)

非常感谢,但我已经使用过这样的东西了。我不明白为什么每次将预加载的列表指定为DataSource时,为什么会选择listBox的第一项。我解决了这个问题,通过创建另一个我的对象类的临时List,从二进制文件中获取哪些项,然后通过listOfObjects.Add(object)方法将它们逐个推送到foreach循环中的原始List。我知道每次在代码ListOfTags.DataSource = null; ListOfTags.DataSource = tags; ListOfTags.DisplayMember = "Name";之后,如果我的标签(它是一个列表)甚至在代码中被预加载(例如,如果我编写代码List<Tag> tags = new List<Tag> {new Tag("1"),new Tag("2"), new Tag("3")};,这会在选择列表框的第一项时采取这种情况,并且在我尝试取消选择listBox中最后选择的项目时,每次开始选择。