2010-12-10 17 views
8

VS2005では、C#を使用して、ListViewでFormsアプリケーションを使用しています。私はリストビューに項目を追加できます。ただし、これらのアイテムをグループに分類するとすぐには表示されません。空のときにグループが表示されないことはわかっていますが、これらのグループがでないことを確認しました。が空です。また、I です。listView.ShowGroups = trueです。グループの1つにアイテムを追加しても、2番目のアイテムにアイテムを追加しないと、「デフォルト」グループが表示されます...追加したグループは表示されません!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ユーモラスなスクリーンショットです。 –

答えて

11

あなたはグループに項目を追加するのではなく、リストビューに項目を追加し、各項目ごとに、目的のグループにそのGroupプロパティを設定するべきではありません。

ShowGroups値がfalseに設定され、その後、ShowGroupsプロパティは、後にtrueに設定されているグループを示す一方で、リストボックスが空白表示されますしながら、アイテムがリストビューに追加されている場合は、このMSDN link

+0

それはそれをしました。それは直感的に私にとって自然なやり方だとは思えませんが、それは明らかに当時のMSFTにとって理にかなったものでした。ありがとう! – JToland

+3

@JToland:考えられる理由の1つは、アイテムを再作成することなく、実行時にあるグループから別のグループにアイテムを簡単に移動できることです。しかし、XPより前のバージョンのWindowsではグループが表示されないという事実にも関係している可能性が高いので、その環境内で表示されるためにはアイテムは 'ListView'自身が所有する必要があります。 –

+2

@Cody:はい、おそらく正しいでしょう。とにかく、私はJTolandにはそれほど直感的ではないことに同意します:D – digEmAll

5

の例を見ることができます(但し、ShowGroupsが偽である場合は内容を含む)。

ShowGroupsは、リストを作成するときに真である必要があります。

タイミングも重要です。 ShowGroupsプロパティがfalseに設定される前に、リストボックスをレンダリングする必要があります。私はダイアログのイベントにそれを設定しました。

これは.NET 4.0での作業中に検出されました。

関連する問題