2010-12-10 132 views
8

在VS2005中,使用C#,我有一個帶有ListView的Forms應用程序。我可以添加項目到列表視圖就好了。但是,只要我嘗試將這些項目分組爲組,它們就不會出現。我知道這些組在空時不會出現,但我確認這些組是而不是爲空。另外,我am設置listView.ShowGroups = true。如果我將項目添加到其中一個組,但不是第二個,則「默認」組將顯示出來......這只是我添加的不顯示的組!C#ListView顯示空白組

下面是我使用的代碼:

this.listView.View = View.Details; 
this.listView.Columns.Add("Column1"); 
this.listView.Columns[0].Width = this.listView.Width - 20; 
this.listView.HeaderStyle = ColumnHeaderStyle.None; 
this.listView.Groups.Add(new ListViewGroup("A")); 
this.listView.Groups.Add(new ListViewGroup("D")); 


foreach(item i in Class.Items) 
{ 
    if (i.Type == Type.A) 
     this.listView.Groups[0].Items.Add(i.Name); 
    else 
     this.listView.Groups[1].Items.Add(i.Name); 
} 
this.listView.ShowGroups = true; 

沒有人有任何想法,爲什麼我的組沒有顯示?下面是我所看到的屏幕截圖:

alt text

+3

+1爲幽默屏幕截圖。 – 2012-07-11 00:17:29

回答

11

你不應該將項目添加到組,而是將項目添加到列表視圖,併爲每個項目列入Group屬性設置爲所需的組。

你可以看到如果項目被添加到列表視圖,而ShowGroups值設置爲false,然後ShowGroups屬性後設置爲true,這MSDN link

+0

這樣做。呵呵,直覺上我覺得這不是一種自然的方式,但是......顯然這對當時的MSFT是有意義的。謝謝! – JToland 2010-12-10 15:48:39

+3

@JToland:我認爲一個可能的原因是,您可以在運行時輕鬆地將項目從一個組移動到另一個組,而無需重新創建項目。但更可能的是,這也與組之前在XP之前的Windows版本下不顯示的事實有關,因此這些項目需要由ListView本身擁有,以便在該環境中顯示。 – 2010-12-10 15:57:15

+2

@Cody:是的,你可能是對的。無論如何,我同意JToland並不是很直觀:D – digEmAll 2010-12-10 16:34:53

5

爲例,列表框將顯示爲空白,同時顯示組(但內容爲ShowGroups爲假時)。

ShowGroups在構建列表時需要爲真。

時間也很重要。列表框需要在ShowGroups屬性設置爲false之前進行渲染。我在我的對話框中顯示了事件。

我在.Net 4.0中工作時發現了這一點。