c# comboClassName.Items.Clear(); 报错:System.ArgumentException:“设置 DataSource 属性后无法修改项集合。” 修改代码避免
时间: 2024-09-21 21:04:39 浏览: 93
`comboClassName.Items.Clear()` 这行代码在 C# 中用于清空 `comboClassName` 控件(通常是 ComboBox 或 ListBox 类型)的项目列表。然而,如果该控件的数据源(DataSource)已经设置,直接调用 `.Clear()` 就会抛出 `System.ArgumentException`,因为一旦设置了数据源,就不能再修改它的项目集合。
为了避免这个错误,你可以按照以下步骤操作:
1. **移除 DataSource**:
如果不需要数据绑定,可以先删除或设置 DataSource 为空:
```csharp
if (comboClassName.DataSource != null)
{
comboClassName.DataSource = null;
}
```
2. **禁用 DataSource 清理**:
如果需要保留数据源,可以将它设置为默认值,然后清除项目,最后恢复数据源:
```csharp
var oldDataSource = comboClassName.DataSource;
comboClassName.DataSource = BindingSource.Empty;
comboClassName.Items.Clear();
comboClassName.DataSource = oldDataSource;
```
3. **只清空 Items**:
如果不想改变 DataSource,可以仅清空 Items 集合而不影响 DataSource,但是这时通常意味着数据绑定不会更新:
```csharp
foreach (var item in comboClassName.Items)
{
comboClassName.Items.Remove(item);
}
```
请根据你的实际需求选择合适的解决方案。
阅读全文