2

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

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

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

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

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

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

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

4

1 回答 1

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;
于 2013-07-24T13:58:44.013 回答