ListViewGroupCollection-Methoden lösen neue InvalidOperationException aus
Zuvor wurde eine InvalidOperationException ausgelöst, wenn ListViewGroupCollection-Methoden für eine ListView im virtuellen Modus aufgerufen wurden und der Handle bereits erstellt wurde. Ab .NET 6 überprüfen diese ListViewGroupCollection-Methoden nur, ob sich ListView im virtuellen Modus befindet. Wenn dies der Fall ist, wird eine InvalidOperationException mit einer aussagekräftigeren Meldung ausgelöst.
Vorheriges Verhalten
Sehen Sie sich den folgenden Code an, der eine ListViewGroup einer ListView hinzufügt:
ListViewGroup group1 = new ListViewGroup
{
Header = "CollapsibleGroup1",
CollapsedState = ListViewGroupCollapsedState.Expanded
};
listView.Groups.Add(group1);
Dieser Code hat eine InvalidOperationException mit der folgenden Meldung hervorgerufen:
Wenn sich ListView im virtuellen Modus befindet, können Sie die ListView-Elementauflistung nicht mithilfe eines Enumerators auflisten oder GetEnumerator aufrufen. Verwenden Sie stattdessen den ListView-Elementindexer, und greifen Sie über den Indexwert auf ein Element zu.
Neues Verhalten
Derselbe Code aus dem Abschnitt Vorheriges Verhalten ruft eine InvalidOperationException mit der folgenden Meldung hervor:
Sie können der ListView-Gruppensammlung keine Gruppen hinzufügen, wenn sich die ListView im virtuellen Modus befindet.
Ändern der Kategorie
Diese Änderung kann sich auf die Binärkompatibilität auswirken.
Grund für die Änderung
Die neue Meldung der InvalidOperationException ist verständlicher. Darüber hinaus wird eine Problemumgehung vermieden, bei der der Entwickler der ListView vor dem Erstellen des Handle eine ListViewGroup hinzufügen konnte.
Eingeführt in Version
.NET 6 RC 2
Empfohlene Maßnahme
- Überprüfen Sie Ihren Code, und aktualisieren Sie ihn bei Bedarf, damit er einer ListView im virtuellen Modus keine ListViewGroup hinzufügt.
- Wenn Ihr Code InvalidOperationException-Ausnahmen behandelt, müssen Sie die Meldung möglicherweise durch den Hinweis aktualisieren, dass sich ListView im virtuellen Modus befindet.