हैक मैं ऊपर के बारे में बात कर रहा हूँ अनुशंसित नहीं है। हालांकि, यदि आप वास्तव में खाली समूहों को दिखाना चाहते हैं, तो आप केवल एक अलग उपयोगिता विधि में जोड़ने कोड को प्रतिनिधि देंगे जो जांचता है कि समूह खाली है या नहीं। यदि ऐसा है, तो यह इसे "डिफ़ॉल्ट" समूह में जोड़ता है (इसलिए यह कम से कम दिखाता है) जब तक आप इसमें कोई आइटम नहीं जोड़ते।
public static void AddGroup(this ListView lv, ListViewGroup lg)
{
if (lg.Items.Count > 0 || lv.Items.Cast<ListViewItem>().Any(tg => tg.Group == lg))
lv.Groups.Add(lg);
else
{
var item = lv.Items.Add(lg.Header);
item.Tag = lg;
}
}
public static void AddItem(this ListView lv, ListViewItem li, string groupKey) // Could also take ListViewGroup here...
{
if (lv.Groups[groupKey] == null && lv.Items.ContainsKey(groupKey))
{
lv.Groups.Add((ListViewGroup)lv.Items[groupKey].Tag);
lv.Items.RemoveByKey(groupKey);
}
lv.Items.Add(li);
li.Group = lv.Groups[groupKey];
}
public static void AddItem(this ListView lv, ListViewItem li, ListViewGroup lg)
{
lv.AddItem(li, lg.Header);
}
एक और चेतावनी, अनुशंसित नहीं। यह काफी अधिक है, और वास्तव में परेशानी (आईएमओ) के लायक नहीं है। लेकिन हे, अपने प्रत्येक के लिए। यह कोड पूरी तरह से अनचाहे है, और अगर आपको वास्तव में काम करने की ज़रूरत है तो इसे बाहर फेंक दें (जो कभी भी मामला नहीं होना चाहिए, विकल्प देखने के लिए बेहतर होना चाहिए)। सबसे बुरा हिस्सा यह है कि ग्रुप घोषणापत्र सूची सूची में ही बहुत अधिक रहता है, इस तरह आप समूह को आसानी से बदल सकते हैं।
अंतिम चेतावनी, अनुशंसित नहीं।
संपादित करें: मैं कोड ListView वस्तुओं पर विस्तार तरीकों होने के लिए, इस तरह आप तरीकों से ListView के लिए सीधी पहुँच है संशोधित कर लिया है ऊपर। जब भी आप एक समूह जोड़ने, तो आप सिर्फ listView.AddGroup
कहेंगे, एक आइटम आप listView.AddItem
तरीकों में से उपयोग कर सकते हैं जोड़ने। यह listView.Items.Add
और listView.Groups.Add
विधियों का विरोध करता है। ध्यान में रखना एक बात यह है कि आपको समूह को आइटम असाइन करने की आवश्यकता नहीं है, बल्कि इसके बजाय केवल समूह को आइटम असाइन करें। यह ऐसा करता है ताकि आप समूहों के बीच संदर्भों को हटाने/जोड़ने के बजाय, संदर्भ को बदलकर समूहों के बीच वस्तुओं को स्विच कर सकें। यह भी मान लिया आप ListItemGroup की Header
Key
के रूप में ही घोषित किया है कि (दूसरे शब्दों में, new ListItemGroup("HeaderText" /*KEY*/, "HeaderText" /*HEADER*/)
। अन्यथा, आप बस AddItem
भीतर तर्क को बदलने के लिए उचित मूल्य (जो Name
है संदर्भित करने के लिए होगा, आमतौर पर)
से पता चलता जहां तक मुझे पता है, खाली समूह बस प्रदर्शित नहीं होते हैं। आप समूह को प्रदर्शित करने के लिए बस एक खाली स्ट्रिंग आइटम जोड़ सकते हैं। – nik
मुझे लगता है कि आपको अपना उत्तर –
सही मिला है। खाली समूह दिखाई नहीं देते हैं। आपको पहले उन्हें आइटम जोड़ना होगा। –