ComboBox更改元素的顺序

时间:2013-07-24 13:49:20

标签: c# combobox

我有一些实现任务的想法,即改变组合框的下拉菜单中出现的项目的顺序。截至目前,我正在使用打开文件对话框的multiselect属性将给定文件填充到组合框中。截至目前,这些项目按字母顺序自动排序。理想情况下,这不是用户想要或需要的我正在完成的应用程序类型。

所以这里有一些我的问题/想法:

1)也许更简单的想法是不按字母顺序排序文件,而是按照点击顺序排序?这可能吗?

2)在右侧下拉菜单中的每个项目上,添加一个小的向上/向下箭头,因此单击时项目的顺序会发生变化。我可以很容易地实现这个想法的逻辑,但我不太确定如何添加视觉效果。

3)拖放..我知道在文本框中这会更容易,但有一种简单的方法可以通过下拉菜单来完成它。

4)也许简单的Ctrl + Up + Click / Ctrl + Down + Click。我觉得我可以实现这一点,但我仍然不确定我是否会如此正确地做到这一点。

我向stackoverflow社区寻求建议,因为很明显,对于一个人来说,你们中很多人在C#方面的经验比我多,所以如果我能节省一些时间和精力,那将真正帮助我完成任务。显然我不是要求代码,只是提出一些建议。谢谢。

1 个答案:

答案 0 :(得分:1)

我总是会使用底层集合,例如List或List。 更改顺序时,首先更改集合,然后将List分配给UI控件。

要在运行时更改,您可以通过删除和重新添加项目来“刷新”控件。 在我的例子中,我在Winforms项目中使用了Listbox:

//Default fill
List<string> Values = new List<string>() { "one", "two", "three", "four" };
Values.ForEach(i => listBox1.Items.Add(i));
//After a while, we sort the list
Values.Sort();
listBox1.Items.Clear();
Values.ForEach(i => listBox1.Items.Add(i));

或者,通过数据源:

//Default fill
Values = new List<string>() { "one", "two", "three", "four" };
listBox1.DataSource = Values;
//After a while, we sort the list
Values.Sort();
listBox1.DataSource = null;
listBox1.DataSource = Values;