如何将双列多选MultiSelect Listbox选中项移至列表顶部?
实现多选列表框选中条目移至顶部
当然可以实现,核心逻辑就是提取选中条目 → 从原列表移除 → 插入到列表最前方,具体操作步骤和代码示例如下:
操作步骤
- 先遍历列表框,收集所有被选中的条目(顺序无关的话无需刻意保存选中顺序)
- 从列表框中移除选中条目(建议从后往前删除,避免索引错乱)
- 将收集到的选中条目依次插入到列表框的顶部(索引0位置)
代码示例(C# WinForms)
// 收集选中的项 List<object> selectedItems = new List<object>(); foreach (object item in listBox1.SelectedItems) { selectedItems.Add(item); } // 从列表中移除选中项(从后往前删,防止索引偏移) for (int i = listBox1.SelectedIndices.Count - 1; i >= 0; i--) { listBox1.Items.RemoveAt(listBox1.SelectedIndices[i]); } // 将选中项插入到顶部 foreach (object item in selectedItems) { listBox1.Items.Insert(0, item); }
代码示例(VB.NET WinForms)
' 收集选中项 Dim selectedItems As New List(Of Object)() For Each item As Object In ListBox1.SelectedItems selectedItems.Add(item) Next ' 移除选中项 For i As Integer = ListBox1.SelectedIndices.Count - 1 To 0 Step -1 ListBox1.Items.RemoveAt(ListBox1.SelectedIndices(i)) Next ' 插入到顶部 For Each item As Object In selectedItems ListBox1.Items.Insert(0, item) Next
效果验证
原列表:
Azerty 120ms
QWERTY 12,56ms
RAW 450,25ms
doWn 235,00 ms
alfa 258,7ms
etc....
选中doWn和RAW后执行代码,结果如下:
doWn 235,00 ms
RAW 450,25ms
Azerty 120ms
QWERTY 12,56ms
alfa 258,7ms
etc....
如果列表框绑定了数据源(如DataTable),则需要直接操作数据源:新增一个优先级字段,选中项设为高优先级,未选中设为低优先级,再按优先级排序即可。
内容的提问来源于stack exchange,提问作者white_flag
相关产品推荐
相关产品推荐

