添加到 ListView 列不增加列数

Adding to ListView columns not increasing column count

我已经使用 VS 2013 设计器创建了一个表单。
我添加了一个 Listview 控件并通过属性 window 添加了 13 列。
然后我用 C# 编写了一个程序,我能够使用 item.SubItems[N] 构造访问所有这些列。此外,所有这些列 headers 都出现在表单的 Listview 中。

后来我添加了 2 个新列。新列显示在 Listview 中,但在我尝试访问它们时抛出无效索引错误。 SubItems.Count 也没有反映 collection 中列的增加。我还注意到,在 form.Designer.cs 文件中,那些新列不存在。

我该怎么做才能确保更新设计器文件并将我的新列添加到 collection? (注意:这与 'off-by-one' 错误或索引号错误无关)在此先感谢。

此行为的原因是 ListView Columns 没有像 TableDataGridView 那样为您提供规则矩阵或网格。

相反,它们就是您所说的 'Jagged Array',意思是,并非所有行都具有相同的列数。

因此,当您提供/增加 Columns 的最大数量时,ListView 将显示,每个 Item 的数量只有您添加的数量 SubItems

如果您在运行时添加 Columns,您可以显示和访问添加的 SubItems,但 仅在您实际添加它们的地方 到 [=16] =].在添加额外的 SubItems 之前,它们不存在!

这与 DataGridView 不同,您可以自由地为每个 Cell 分配值,包括那些属于 Columns 的值,您刚刚在代码..

这与数组的两种类型非常相似,Jagged Arrays and Multidimensional Arrays..

但回到你的标题:实际 listView.Columns.Count 已经 增加了; 没有的是任何项目的ListViewItem.SubItems.Count