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


106

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


8
+1:好问题。ListView控件的这一部分非常混乱且不直观。有时我真的认为他们讨厌开发人员@ MS
Mehdi LAMRANI 2012年

1
@Mika:要从用户那里摆脱健壮的GUI设计的复杂性并不容易。
Christopher Berman 2013年

1
(这听起来让我的脑袋光顾了;对不起!)
Christopher Berman 2013年

加入subiiems
Ramankingdom

Answers:


134

有几种方法可以做到这一点,但这是一种解决方案(适用于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});

65

您可以将项目 / 子项目添加到ListView中,例如:

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

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

listView1.View = View.Details;

2
使用“ listView1.FullRowSelect = true”也非常重要...否则,只有第1列是可单击的。我希望我早一点知道!它将为我节省很多工作。
John Henckel 2015年

特别是有关listView1.View的评论确实对我有所帮助!谢谢!
Dev.Jaap'4

7
 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);

        }

7

这是有关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 i = new ListViewItem("column1");
i.SubItems.Add("column2");
i.SubItems.Add("column3");

4

对于您的问题,使用这样的方法:

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.