【问题标题】:C# listView, how do I add items to columns 2, 3 and 4 etc?C# listView,如何将项目添加到第 2、3 和 4 列等?
【发布时间】:2010-10-03 03:44:23
【问题描述】:

要将项目添加到我的 listView 控件 (Winform) 中的第 1 列,我正在使用 listView1.Items.Add,这很好用,但是如何将项目添加到第 2 列和第 3 列等?

【问题讨论】:

  • +1:好问题。 ListView 控件的这一部分非常混乱和不直观。有时候我真的觉得他们讨厌开发者@MS
  • @Mika:从用户那里抽象出强大的 GUI 设计的复杂性并不容易。
  • (这在我的脑海中听起来不那么傲慢;对不起!)
  • 添加到子目录

标签: c# winforms listview


【解决方案1】:

有几种方法可以做到这一点,但这里有一种解决方案(4 列)。

string[] row1 = { "s1", "s2", "s3" };
listView1.Items.Add("Column1Text").SubItems.AddRange(row1);

这里有一个更详细的方法:

ListViewItem item1 = new ListViewItem("Something");
item1.SubItems.Add("SubItem1a");
item1.SubItems.Add("SubItem1b");
item1.SubItems.Add("SubItem1c");

ListViewItem item2 = new ListViewItem("Something2");
item2.SubItems.Add("SubItem2a");
item2.SubItems.Add("SubItem2b");
item2.SubItems.Add("SubItem2c");

ListViewItem item3 = new ListViewItem("Something3");
item3.SubItems.Add("SubItem3a");
item3.SubItems.Add("SubItem3b");
item3.SubItems.Add("SubItem3c");

ListView1.Items.AddRange(new ListViewItem[] {item1,item2,item3});

【讨论】:

  • 在我的情况下,我添加了一个子项,但仍然没有出现,然后我明白我需要在列表视图中添加一个额外的标题 -> ColumnHeader header2 = new ColumnHeader { Text = "Column2 ", 名称 = "col2" }; listView.Columns.Add(header2);
【解决方案2】:

您可以将items / sub-items 添加到 ListView 中,例如:

ListViewItem item = new ListViewItem(new []{"1","2","3","4"});
listView1.Items.Add(item);

但我怀疑您的问题与View Type 有关。在设计器中将其设置为 Details 或在代码中执行以下操作:

listView1.View = View.Details;

【讨论】:

  • 使用“listView1.FullRowSelect = true”也很重要...否则只有第1列是可点击的。我希望我早点知道这一点!它会为我节省大量的工作。
  • 尤其是关于 listView1.View 的评论对我有帮助!谢谢!
【解决方案3】:
 private void MainTimesheetForm_Load(object sender, EventArgs e)
        {
            ListViewItem newList = new ListViewItem("1");
            newList.SubItems.Add("2");
            newList.SubItems.Add(DateTime.Now.ToLongTimeString());
            newList.SubItems.Add("3");
            newList.SubItems.Add("4");
            newList.SubItems.Add("5");
            newList.SubItems.Add("6");
            listViewTimeSheet.Items.Add(newList);

        }

【讨论】:

    【解决方案4】:

    这是关于 listview 对象和 listviewItem 对象的 msdn 文档。
    http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.aspx
    http://msdn.microsoft.com/en-us/library/system.windows.forms.listviewitem.aspx

    我强烈建议您至少花时间浏览一下您在 .net 框架中使用的任何对象的文档。虽然有时文档可能很差,但它仍然非常宝贵,尤其是当您遇到这种情况时。

    但正如 James Atkinson 所说,这只是将子项添加到 listviewitem 的问题,如下所示:

    ListViewItem i = new ListViewItem("column1");
    i.SubItems.Add("column2");
    i.SubItems.Add("column3");
    

    【讨论】:

      【解决方案5】:

      对于您的问题,请像这样使用:

      ListViewItem row = new ListViewItem(); 
      row.SubItems.Add(value.ToString()); 
      listview1.Items.Add(row);
      

      【讨论】:

        【解决方案6】:

        我制作的一条线,它有效:

        listView1.Items.Add(new ListViewItem { ImageIndex = 0, Text = randomArray["maintext"], SubItems = { randomArray["columntext2"], randomArray["columntext3"] } });
        

        【讨论】:

        • 代码不起作用...Error CS0200 Property or indexer 'ListViewItem.SubItems' cannot be assigned to -- it is read only
        【解决方案7】:

        使用 ListViewSubItem - 请参阅:MSDN

        【讨论】:

          猜你喜欢
          • 2012-07-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-13
          • 1970-01-01
          相关资源
          最近更新 更多