以前,如果在虚拟模式下对 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 处于虚拟模式。