2019版本VB,COMBOBOX控件的DISPLAYMEMBER属性值与VALUEMEMBER属性值不一致时会报错,如何处理?
时间: 2024-03-24 10:38:14 浏览: 14
当ComboBox控件的DisplayMember属性值与ValueMember属性值不一致时,如果绑定的数据源中的某个项的DisplayMember属性值为空或为null,则会出现"System.ArgumentException:“所提供的值无效”"的错误。
要解决这个问题,可以在绑定数据源之前,先检查数据源中的每个项的DisplayMember属性值是否为空或为null。如果DisplayMember属性值为空,则将其设置为与ValueMember属性值相同的值,这样就可以避免上述错误的出现。
以下是示例代码:
```vb.net
' 绑定数据源之前,先检查数据源中的每个项的DisplayMember属性值是否为空或为null
For Each item As Object In comboBox1.Items
If String.IsNullOrEmpty(item.GetType().GetProperty(comboBox1.DisplayMember).GetValue(item, Nothing)) Then
item.GetType().GetProperty(comboBox1.DisplayMember).SetValue(item, item.GetType().GetProperty(comboBox1.ValueMember).GetValue(item, Nothing))
End If
Next
' 绑定数据源
comboBox1.DataSource = dataSource
comboBox1.DisplayMember = "DisplayMemberName"
comboBox1.ValueMember = "ValueMemberName"
```
这样就可以避免因DisplayMember属性值为空或为null而导致的异常。