27

アイテム(キーの下)を作成するのは簡単ですが、サブアイテム(値)を追加するにはどうすればよいですか?

listView1.Columns.Add("Key");
listView1.Columns.Add("Value");
listView1.Items.Add("sdasdasdasd");
//How to add "asdasdasd" under value?
4

10 に答える 10

14

ListView に表示する多くの項目を含む List Collection があるとします。List Collection を反復処理する次の例を見てください。

foreach (Inspection inspection in anInspector.getInspections())
  {
    ListViewItem item = new ListViewItem();
    item.Text=anInspector.getInspectorName().ToString();
    item.SubItems.Add(inspection.getInspectionDate().ToShortDateString());
    item.SubItems.Add(inspection.getHouse().getAddress().ToString());
    item.SubItems.Add(inspection.getHouse().getValue().ToString("C"));
    listView1.Items.Add(item);
  }

このコードは、ListView に次の出力を生成します (もちろん、List コレクションにあるアイテムの数によって異なります)。

基本的に、最初の列は多くのサブアイテム (他の列) を含むリストビュー項目です。奇妙に思えるかもしれませんが、listview は非常に柔軟で、windows のようなファイル エクスプローラーを作成することもできます。

于 2009-04-08T09:10:39.273 に答える
3

ListViewItemsCollection の拡張メソッドを使用して、これを改良しました。私の意見では、呼び出しコードがより簡潔になり、より一般的な再利用が促進されます。

internal static class ListViewItemCollectionExtender
{
    internal static void AddWithTextAndSubItems(
                                   this ListView.ListViewItemCollection col, 
                                   string text, params string[] subItems)
    {
        var item = new ListViewItem(text);
        foreach (var subItem in subItems)
        {
            item.SubItems.Add(subItem);
        }
        col.Add(item);
    }
}

AddWithTextAndSubItems の呼び出しは次のようになります。

// can have many sub items as it's string array
myListViewControl.Items.AddWithTextAndSubItems("Text", "Sub Item 1", "Sub Item 2"); 

お役に立てれば!

于 2012-01-06T14:41:56.647 に答える
2

一般的:

ListViewItem item = new ListViewItem("Column1Text")
   { Tag = optionalRefToSourceObject };

item.SubItems.Add("Column2Text");
item.SubItems.Add("Column3Text");
myListView.Items.Add(item);
于 2013-05-21T19:27:16.073 に答える
1

偉大な !!とても助かりました。以前は VB6 を使用して同じことを行っていましたが、今では完全に異なります。これを追加する必要があります

listView1.View = System.Windows.Forms.View.Details;
listView1.GridLines = true; 
listView1.FullRowSelect = true;
于 2009-11-03T12:09:41.923 に答える