C# 组合框元素的更改顺序

C# 组合框元素的更改顺序,c#,combobox,C#,Combobox,我有一些实现任务的想法,即更改组合框下拉菜单中出现的项目的顺序。现在,我正在使用“打开文件”对话框的multiselect属性将给定文件填充到组合框中。到目前为止,这些项目是按字母顺序自动排序的。理想情况下,对于我正在完成的应用程序类型,这不是用户想要或需要的 以下是我的一些问题/想法: 1) 也许更简单的想法是,不是让文件按字母顺序排序,而是让它们按点击顺序排序?这可能吗 2) 在右侧下拉菜单上的每个项目上,添加一个小的向上/向下箭头,以便在单击时更改项目的顺序。我可以很容易地实现这个想法的逻

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

以下是我的一些问题/想法:

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

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

3) 拖放。。我知道这在文本框中更容易实现,但是有没有一种简单的方法可以通过下拉菜单来实现呢

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


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

我将始终使用基础集合,如列表或列表。 更改顺序时,首先更改集合,然后将列表分配给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));
//默认填充
列表值=新列表(){“一”、“二”、“三”、“四”};
Values.ForEach(i=>listBox1.Items.Add(i));
//过了一会儿,我们整理了一下名单
value.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;
//默认填充
值=新列表(){“一”、“二”、“三”、“四”};
listBox1.DataSource=值;
//过了一会儿,我们整理了一下名单
value.Sort();
listBox1.DataSource=null;
listBox1.DataSource=值;

您是否考虑过创建一个列表并在该列表上使用排序方法,然后将其绑定到ComboBox?没有,因为这不是我真正想要的。我想知道UI框架中的哪个事件最适合触发逻辑。例如,拖放-->将被拖动元素的顺序与它所放置的元素切换。您应该熟悉使用
集合
它是否已填充并不重要。您始终可以根据
事件链
中要触发代码的位置来操作集合。。你使这项简单的任务比它需要的困难了一点。。i、 e
不要过度考虑这个过程
亲吻
方法会产生奇迹<代码>保持简单因此让我们假设列表绑定到组合框。您建议哪个事件触发对集合的操纵?您希望在流程中的何处更改集合。。我还建议您使用BindingList,如果您告诉我您想要它在哪里。。我不是在做你正在做的程序..如果我想在运行时更改顺序怎么办。我已经填充了组合框,我需要一些事件发生的时间来更改顺序。正如我所说的,我不会有太多的困难改变逻辑的基础。我所要做的就是更改我的文件名字符串数组中元素的索引。@user1819301我已经编辑了我的答案。这就是你要找的吗?不,对不起。我知道如何给列表排序。我正在尝试启用这个功能,用户可以通过GUI组件手动更改comboBoxitems的顺序。我只是不知道哪种方法最有效