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

Visual Studio中C# ListBox如何将选中项置顶、未选中项置底?

实现ListBox选中项置顶的简便方法

针对Visual Studio中WinForms环境下的ListBox,直接操作Items集合就能快速实现需求,以下是具体代码示例:

单个选中项的情况

// 假设你的ListBox控件名为listBox1
if (listBox1.SelectedItem != null)
{
    var selectedItem = listBox1.SelectedItem;
    // 移除选中项
    listBox1.Items.Remove(selectedItem);
    // 插入到列表首位
    listBox1.Items.Insert(0, selectedItem);
    // 保持选中状态
    listBox1.SelectedItem = selectedItem;
}

多个选中项的情况(需将ListBox的SelectionMode设为MultiSimple或MultiExtended)

if (listBox1.SelectedItems.Count > 0)
{
    // 先缓存所有选中项
    var selectedItems = new List<object>(listBox1.SelectedItems.Cast<object>());
    
    // 移除列表中的选中项
    foreach (var item in selectedItems)
    {
        listBox1.Items.Remove(item);
    }
    
    // 倒序插入到首位,保持原选中顺序
    foreach (var item in selectedItems.Reverse())
    {
        listBox1.Items.Insert(0, item);
    }
    
    // 重新选中这些项
    foreach (var item in selectedItems)
    {
        listBox1.SelectedItems.Add(item);
    }
}

如果是WPF的ListBox

若你使用的是WPF,通常会绑定ObservableCollection作为ItemsSource,操作逻辑类似:

// 假设绑定的集合为ObservableCollection<string>类型的myCollection
if (listBox1.SelectedItem != null)
{
    var selectedItem = listBox1.SelectedItem as string;
    if (selectedItem != null)
    {
        myCollection.Remove(selectedItem);
        myCollection.Insert(0, selectedItem);
        listBox1.SelectedItem = selectedItem;
    }
}

内容的提问来源于stack exchange,提问作者rinzlet walker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:35:16