Поделиться через


Методы ListViewGroupCollection вызывают новое исключение InvalidOperationException

Ранее создавалось исключение InvalidOperationException, если методы ListViewGroupCollection вызывались для ListView в виртуальном режиме при уже созданномHandle. Начиная с .NET 6, эти методы ListViewGroupCollection только проверяют, находится ли ListView в виртуальном режиме. Если это так, они создают исключение InvalidOperationException с более точным сообщением.

Прежнее поведение

Для примера рассмотрим следующий код, который добавляет ListViewGroup в ListView:

ListViewGroup group1 = new ListViewGroup
{
    Header = "CollapsibleGroup1",
    CollapsedState = ListViewGroupCollapsedState.Expanded
};

listView.Groups.Add(group1);

Этот код создал объект InvalidOperationException со следующим сообщением:

Если ListView находится в виртуальном режиме, вы не можете перечислить коллекцию элементов ListView с помощью перечислителя или вызова GetEnumerator. Вместо этого используйте индексатор элементов ListView и доступ к элементу по значению индекса.

Новое поведение

Тот же код, приведенный в разделе Прежнее поведение, создает исключение InvalidOperationException со следующим сообщением:

Если ListView находится в виртуальном режиме, добавление групп в коллекцию групп ListView невозможно.

Категория изменения

Это изменение влияет на совместимость на уровне двоичного кода.

Причина изменения

Новое сообщение InvalidOperationException является более понятным. Кроме того, оно запрещает разработчикам использовать обходной путь, добавляя ListViewGroup в ListView перед созданием Handle.

Представленные версии

.NET 6 RC 2

  • Проверьте и при необходимости обновите код, чтобы он не добавлял ListViewGroup в ListView, находящийся в виртуальном режиме.
  • Если ваш код обрабатывает исключения InvalidOperationException, возможно следует обновить сообщение об ошибке, чтобы отразить в нем виртуальный режим для ListView.

Затронутые API