2011-09-06 143 views
0

希望你們能夠在我瘋了之前再次幫助我。 我們一直在尋找輕和低,在這裏和谷歌。 通過MSDN來回走,但無濟於事......我只是不明白我在做什麼錯...列表查看項目(和子項目)

我有一個表格,在那裏我添加了一個列表視圖(沒有任何更改當它被拖動到表單時的默認設置)。

經過一天的鬼混,我只是簡單地嘗試一個簡單的例子,因爲沒有我想做的事情會工作。這個例子得到了某種「如果這不起作用,那麼是時候尋求幫助了!」...

這是例子;

ListViewItem item = new ListViewItem(); 
item.Text = "FirstItem"; 
item.SubItems.Add("A subitem"); 
item.SubItems.Add("A second subitem"); 
item.SubItems.Add("A third subitem"); 
listView1.Items.Add(item); 

所有,這個例子給我,它「與firstItem」,沒有別的...

我自己的版本,我想試試,如下:

我有一個名爲詞典「成員」。它包含兩個兩個字符串,「名稱」爲Key,以及「LastSeen」廣告價值。

我想以下幾點:

if (GroupMembers.Count > 0) 
{ 
    listView1.Items.Clear(); 
    key2name getname = new key2name(); 
    ListViewItem lvi = new ListViewItem("Name"); 
    ListViewItem lvi2 = new ListViewItem("Last seen"); 
    listView1.Columns.Add("Name", -2, HorizontalAlignment.Left); 
    listView1.Columns.Add("LastSeen", -2, HorizontalAlignment.Left); 
    foreach (KeyValuePair<string, string> member in GroupMembers) 
    { 
     lvi.SubItems.Add(member.Key); 
     lvi2.SubItems.Add(member.Value); 
    } 
    listView1.Items.AddRange(new ListViewItem[] { lvi, lvi2 }); 
} 

什麼我試圖acomplish,是我的列表視圖會顯示兩列,與文本「名稱」的第一列名,第二屆「最後一次露面」。 在這些列的每一列下,我想讓我的字典的內容顯示出來。

有人可以幫我解釋一下這個之前我徹底瘋了嗎? 謝謝...

雖然答案是正確的,我還沒有得到我想要的本安輸出,而我不知道怎麼做吧..

現在我看到的列, 但我得到這個:

| Name | LastSeen | 
|Last seen | 2011-09-06 | 
|Name  | Full Name | 

我要的是:

| Name | LastSeen | 
|FullName | 2011-09-06 | 
|FullName | 2011-09-06 | 
|FullName | 2011-09-06 | 

字典curently包含3個KeyValuePairs

+0

您正在添加SubItems。您應該添加ListViewItems。 –

回答

1

這個例子是正確的,你應該把listView放入詳細模式並添加列。

你的代碼之後是錯誤的你不應該創建兩個列表項目lvi和lv2,只在foreach中創建1,其文本是第一列的文本,添加子項目並將其添加到列表視圖內該foreach。

只有當您在詳細模式下設置ListView時,纔會看到列。

+0

謝謝大衛..我錯過了你的答案... 顯然,這是正確的代碼: [code] listView1.Items.Clear(); key2name getname = new key2name(); listView1.Columns.Add(「Name」,-2,Horizo​​ntalAlignment.Left); listView1.Columns.Add(「LastSeen」,-2,Horizo​​ntalAlignment.Left); foreach(KeyValuePair GroupMembers中的成員) ListViewItem lvi = new ListViewItem(getname.Execute(member.Key)); lvi.SubItems.Add(member.Value); listView1.Items.Add(lvi); } [/ code] – Rickard

0

如果您看到的只是大圖標,則需要將ListView上的View property設置爲Details。否則代碼看起來或多或少是正確的。

1

確保您的ListView將其視圖屬性設置爲「詳細信息」以便列顯示。

您可能還想在設計時設置一些listview的屬性,包括您的列,除非它們是動態的。

if (GroupMembers.Count > 0) 
    { 
     listView1.Items.Clear(); 
     key2name getname = new key2name(); 

     //If your going to do this here, you will want to clear your Columns 
     //listView1.Columns.Clear(); 
     //However, I would suggest you put this elsewhere, or better yet set at design time. 

     listView1.Columns.Add("Name", -2, HorizontalAlignment.Left); 
     listView1.Columns.Add("LastSeen", -2, HorizontalAlignment.Left); 


     foreach (KeyValuePair<string, string> member in GroupMembers) 
     { 
      //This creates a new 'row' in your listview, and populates the first column 
      // with the Key 
      ListViewItem lvi = new ListViewItem(member.Key); 

      //This populates the second column with the value 
      lvi.SubItems.Add(member.Value); 


      listView1.Items.Add(lvi) 
     } 
    } 
+0

那麼簡單... 謝謝:) – Rickard

+0

如果這個工作,你應該把它標記爲答案Rickard。 –