在winforms C#中我应该使用什么控件来选择多个项目?

时间:2015-05-23 14:29:03

标签: c# winforms visual-studio-2010

我真的很困惑,在考虑将哪种控制用于我的目的。

我有项目列表说item1到item10。用户可以按任意顺序选择4个或5个项目。

现在,用户选择的项目必须以相同的顺序分开。

例如,如果用户按以下顺序选择了项目:item4,item8,item3和item2。

我想以同样的顺序。 ITEM4,item8,项目3,ITEM2。

如何在winforms控件中实现此目的?

2 个答案:

答案 0 :(得分:0)

这不是一个非常好的解决方案,但我按照你的要求写了它。 根据需要将列表框的SelectionMode设置为MultiExtendedMultiSimple 然后在ListBox的SelectedIndexChanged事件中编写此代码:

    List<string> orderedSelection = new List<string>();
    bool flag = true;
    private void listBox3_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (flag)
        {
            flag = false;
            var list1 = listBox3.SelectedItems.Cast<string>().ToList();
            if (listBox3.SelectedItems.Count > orderedSelection.Count)
            {
                orderedSelection.Add(list1.Except(orderedSelection).First());
            }
            else if (listBox3.SelectedItems.Count < orderedSelection.Count)
            {
                orderedSelection.Remove(orderedSelection.Except(list1).First());
            }

            var list2 = listBox3.Items.Cast<string>().Except(list1).ToList();
            listBox3.Items.Clear();
            for (int i = 0; i < list1.Count; i++)
            {
                listBox3.Items.Add(list1[i]);
                listBox3.SelectedIndex = i;
            }
            foreach (string s in list2)
            {
                listBox3.Items.Add(s);
            }
            flag = true;
        }
    }

当用户选择一个项目时,它会到达列表的第一个,其余的项目将在下一个。

此外,还有另一种方法。您可以使用带有两个额外按钮的CheckedListBox来上下移动所选项目。因此,用户可以更改所选项目的顺序。

答案 1 :(得分:0)

此解决方案使用CheckListBox的ItemCheck事件以及私有List来跟踪点击项目顺序。

$(document).on('ready', function() {
    $("#myName").fileinput({ showUpload: false, showRemove: false });
});