C# listView,如何将项目添加到第 2、3 和 4 列等?

Posted

技术标签:

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

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

【问题讨论】:

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

【讨论】:

以上是关于C# listView,如何将项目添加到第 2、3 和 4 列等?的主要内容,如果未能解决你的问题,请参考以下文章

c# listview 怎么添加图片

如何在 C# WPF 中从 ListView/XML 中完全删除一个项目?

如何在 Flutter 中让 ListView 中的项目覆盖整个屏幕

c# .net listview 与分组

将项目添加到 Listview 控件

在c#如何将listview中的数据保存到数据库中的表中