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
建议的操作
- 检查并在必要时更新代码,使其不会在虚拟模式下将 ListViewGroup 添加到 ListView。
- 如果代码处理 InvalidOperationException 异常,可能需要更新消息以反映 ListView 处于虚拟模式。