ListViewGroupCollection 方法引发新的 InvalidOperationException

以前,如果在虚拟模式下对 ListView 调用 ListViewGroupCollection 方法并且已经创建了 Handle,则会引发 InvalidOperationException。 从 .NET 6 开始,这些 ListViewGroupCollection 方法现在仅检查 ListView 是否处于虚拟模式。 如果是,它们会引发一个含有更具描述性消息的 InvalidOperationException

旧行为

考虑以下将 ListViewGroup 添加到 ListView 的代码:

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

listView.Groups.Add(group1);

此代码生成含有以下消息的 InvalidOperationException

当 ListView 处于虚拟模式时,不能使用枚举器或调用 GetEnumerator 依次枚举 ListView 项集合。 请改用 ListView 项索引器并按索引值访问项。

新行为

旧行为部分中的相同代码会生成含有以下消息的 InvalidOperationException

当 ListView 处于虚拟模式时,无法将组添加到 ListView 组集合。

更改类别

此更改会影响二进制兼容性。

更改原因

新的 InvalidOperationException 消息更易于理解。 此外,它还关闭了一种解决方法,开发人员可以在创建 Handle 之前将 ListViewGroup 添加到 ListView

引入的版本

.NET 6 RC 2

受影响的 API