C#listView、列2、3、4などにアイテムを追加するにはどうすればよいですか?


106

使用しているlistViewコントロール(Winform)の列1に項目を追加するにはlistView1.Items.Add、これは正常に機能しますが、列2や3などに項目を追加するにはどうすればよいですか?


8
+1:いい質問ですね。ListViewコントロールのこの部分は非常に混乱し、直感的ではありません。時々私は彼らが開発者を嫌うと本当に思っています@ MS
Mehdi LAMRANI '17

1
@ミカ:堅牢なGUI設計の複雑さをユーザーから抽象化するのは簡単ではありません。
クリストファーバーマン2013年

1
(それは私の頭の中でそれほどひいきにならないように聞こえました、申し訳ありません!)
クリストファー・バーマン2013年

Subiiemsに追加
Ramankingdom 2017

回答:


134

これを行う方法はいくつかありますが、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});

65

次のように、リストビューにアイテム / サブアイテムを追加できます

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

しかし、あなたの問題はビュータイプにあると思います。デザイナーで[詳細]に設定するか、コードで次の操作を行います。

listView1.View = View.Details;

2
「listView1.FullRowSelect = true」を使用することも非常に重要です。それ以外の場合は、列1のみがクリック可能です。もっと早く知っていたら良かったのに!それは私にたくさんの仕事を節約したでしょう。
John Henckel、2015年

特にlistView1.Viewに関するコメントは私を助けてくれました!Thnx!
Dev.Jaap

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

0

私が作った1つの行とそれが機能します:

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.