使用 AddRange 将多个子项添加到列表视图项失败

本文关键字:添加 视图 失败 列表 AddRange 使用 | 更新日期: 2023-09-27 18:31:27

使用

lvi.SubItems.AddRange(new ListViewItem.ListViewSubItem[5]);
Debug.Assert(lvi.SubItems.Count == 5);

断言失败,lvi.SubItems.Count 为 1,访问lvi.SubItems[1]失败。

什么?那不应该增加5个项目吗?

澄清一下:我知道我可以使用Add()单独添加它们 - 我在问为什么这不起作用)


更大的上下文:listView1 是详细信息视图中的 winforms 列表视图,添加了 6 列:

   public Form1()
    {
        InitializeComponent();
        ListViewItem lvi = new ListViewItem();
        listView1.Items.Add(lvi);
        int expectedCount = 6;
        Debug.Assert(listView1.Columns.Count == expectedCount);
        if (lvi.SubItems.Count != expectedCount - 1)
        {
            lvi.SubItems.Clear();
            lvi.SubItems.AddRange(new ListViewItem.ListViewSubItem[expectedCount - 1]);
            Debug.Assert(lvi.SubItems.Count == expectedCount - 1);
        }
    }

(VS Express 2013RC, VS 2008 Pro)

使用 AddRange 将多个子项添加到列表视图项失败

请尝试以下操作

lvi.BeginUpdate();
for (int i = 0; i < 5; i++)
   lvi.SubItems.Add(String.Empty); // adding empty items 
lvi.EndUpdate();
Debug.Assert(lvi.SubItems.Count == expectedCount - 1);

如果要使用添加范围

vi.SubItems.AddRange(Enumerable.Repeat(string.Empty, expectedCount - 1).ToArray());