我真的很困惑,在考虑将哪种控制用于我的目的。
我有项目列表说item1到item10。用户可以按任意顺序选择4个或5个项目。
现在,用户选择的项目必须以相同的顺序分开。
例如,如果用户按以下顺序选择了项目:item4,item8,item3和item2。
我想以同样的顺序。 ITEM4,item8,项目3,ITEM2。
如何在winforms控件中实现此目的?
答案 0 :(得分:0)
这不是一个非常好的解决方案,但我按照你的要求写了它。
根据需要将列表框的SelectionMode
设置为MultiExtended
或MultiSimple
然后在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 });
});