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

如何根据指定字符串正确实现ListView多选状态显示?

问题原因及解决方案

问题根源

你当前代码只选中最后一项的核心原因是**SelectedIndex是单选中属性**,每次赋值都会覆盖之前的选中状态,循环执行到最后,只有最后一个匹配项(D对应的索引3)会保留选中状态。另外,用正则匹配提取标识的方式也没必要,直接分割字符串更简洁。

正确实现步骤

首先要确保你的ListView支持多选:

  • 如果是普通多选(无复选框):将ListView的SelectionMode属性设置为MultiSimple或MultiExtended
  • 如果是复选框多选:将ListView的CheckBoxes属性设置为true

然后按以下方式修改代码:

方案1:普通多选(无复选框)

string a = "A:B:D";
// 先清空原有选中状态
ListManyOption.SelectedItems.Clear();
// 分割字符串得到每个标识
string[] items = a.Split(':');
foreach (string item in items)
{
    switch (item)
    {
        case "A":
            ListManyOption.SelectedItems.Add(ListManyOption.Items[0]);
            break;
        case "B":
            ListManyOption.SelectedItems.Add(ListManyOption.Items[1]);
            break;
        case "C":
            ListManyOption.SelectedItems.Add(ListManyOption.Items[2]);
            break;
        case "D":
            ListManyOption.SelectedItems.Add(ListManyOption.Items[3]);
            break;
    }
}

方案2:复选框多选

string a = "A:B:D";
// 先清空原有复选状态
foreach (ListViewItem item in ListManyOption.Items)
{
    item.Checked = false;
}
// 分割字符串得到每个标识
string[] items = a.Split(':');
foreach (string item in items)
{
    switch (item)
    {
        case "A":
            ListManyOption.Items[0].Checked = true;
            break;
        case "B":
            ListManyOption.Items[1].Checked = true;
            break;
        case "C":
            ListManyOption.Items[2].Checked = true;
            break;
        case "D":
            ListManyOption.Items[3].Checked = true;
            break;
    }
}

额外优化建议

如果标识(A/B/C/D)和ListView项的对应关系是固定的(比如A对应索引0,B对应1,以此类推),可以不用switch,直接通过字符计算索引,让代码更简洁:

string a = "A:B:D";
ListManyOption.SelectedItems.Clear();
foreach (string str in a.Split(':'))
{
    // 计算索引:A对应0,B对应1,以此类推
    int index = str[0] - 'A';
    if (index >= 0 && index < ListManyOption.Items.Count)
    {
        ListManyOption.SelectedItems.Add(ListManyOption.Items[index]);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:05:18