添加到 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
没有像 Table
或 DataGridView
那样为您提供规则矩阵或网格。
相反,它们就是您所说的 'Jagged Array',意思是,并非所有行都具有相同的列数。
因此,当您提供/增加 Columns
的最大数量时,ListView
将显示,每个 Item
的数量只有您添加的数量 SubItems
。
如果您在运行时添加 Columns
,您可以显示和访问添加的 SubItems
,但 仅在您实际添加它们的地方 到 [=16] =].在添加额外的 SubItems
之前,它们不存在!
这与 DataGridView
不同,您可以自由地为每个 Cell
分配值,包括那些属于 Columns
的值,您刚刚在代码..
这与数组的两种类型非常相似,Jagged Arrays and Multidimensional Arrays..
但回到你的标题:实际 listView.Columns.Count
已经 增加了; 没有的是任何项目的ListViewItem.SubItems.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
没有像 Table
或 DataGridView
那样为您提供规则矩阵或网格。
相反,它们就是您所说的 'Jagged Array',意思是,并非所有行都具有相同的列数。
因此,当您提供/增加 Columns
的最大数量时,ListView
将显示,每个 Item
的数量只有您添加的数量 SubItems
。
如果您在运行时添加 Columns
,您可以显示和访问添加的 SubItems
,但 仅在您实际添加它们的地方 到 [=16] =].在添加额外的 SubItems
之前,它们不存在!
这与 DataGridView
不同,您可以自由地为每个 Cell
分配值,包括那些属于 Columns
的值,您刚刚在代码..
这与数组的两种类型非常相似,Jagged Arrays and Multidimensional Arrays..
但回到你的标题:实际 listView.Columns.Count
已经 增加了; 没有的是任何项目的ListViewItem.SubItems.Count
。