Chyba ve vlastnosti ListView.ShowGroups   připomínka

VB.NET

Objevil jsem již druhou chybu v .NET Frameworku (první byla nefunkčnost My.User.IsInRole v konzolových aplikacích). Jedná se o vlastnost ShowGroups ovládacího prvku ListView, kterou se povoluje/zakazuje zobrazování skupin položek. Pokud máte nastavenou tuto vlastnost na False, přidáte nové položky a nastavíte ji na True, nově přidané položky se vůbec nezobrazí. Je to poměrně závažná chyba, o které zdá se Microsoft ví, ale neopravil ji ve Frameworku 3.x z důvodu zpětné kompatibility. Projekt, který toto používá mám ve verzi 3.5 SP1 a do novější ho předělávat nebudu a zatím se mi nepodařilo najít funkční workaround, kterým by se toto vyřešilo. Opět jsem upozornil v podobě Community Contentu na MSDN, ale nejspíš bude zase bez odezvy, tak alespoň jako výstraha pro ostatní, kteří se s tím náhodou setkají.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Problém se dá "prasácky" vyřešit tak, že před každým přidáváním nebo modifikací položky se zavolá ShowGroups = True. Nepříjemný důsledek tohoto postupu je viditelné probliknutí seznamu při větším počtu položek.

Private Sub AddItems(ByVal items() As ListViewItem)
  With ListView1  
    Dim value = .ShowGroups
    .BeginUpdate()
    .ShowGroups = True
    .Items.AddRange(items)
    .ShowGroups = value
    .EndUpdate()
  End With
End Sub

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback