You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将双列多选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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 01:15:31