初始化ListView,为什么我不能这样做?

时间:2019-09-13 16:59:01

标签: c# listview

作为一个老C ++程序员,我正在努力解决一些C#问题。我想减少设置ListView的冗余。所以我尝试了下面的代码。我收到空引用错误,但我不明白为什么。编译器对我创建ListViewItems数组没有问题,但是我看不到如何使用它们。

谢谢,罗斯


    ListViewItem [] items = new ListViewItem [12];
    for (int i=0; i < 12; ++i) {
        items [i].Text = string.Format ("F{0}", i+1);
   }

2 个答案:

答案 0 :(得分:0)

您正在为12个ListViewItems数组分配内存,但尚未创建ListViewItem:

相反,请尝试以下操作:

List<ListViewItem> items = new List<ListViewItem>();
for (int i = 0; i < 12; i++) {
  items.Add(  //using the List.Add() method to add an item
    new ListViewItem 
    { 
      Text = string.Format ("F{0}", i+1); //Object Initialization syntax to add an item after construction
    });
}

这将创建一个列表(可扩展的集合);在循环中创建一个新的ListViewItem,为该ListViewItem提供所需的文本,然后将该项目添加到列表中。

答案 1 :(得分:0)

您似乎收到了空引用,因为您试图在未初始化的对象上设置属性(文本)(ListViewItem [i])。 试试这个:

ListViewItem [] items = new ListViewItem [12];
    for (var i = 0; i < items.Length; ++i) {
        items[i] = new ListViewItem{Text = string.Format ("F{0}", i+1)};
}