我有一个名为ReplacementTo
的属性我根据组合框中的selecteditem设置了一个值,如下所示:
classEquipmentItem.ReplacementTo = cmbReplcmnt.SelectedItem.ToString
现在我不能使用cmbReplcmnt.Text,因为我实际需要的是那个SelectedItem的值
问题是,如果用户将组合框保留为空白,则会抛出空异常。 我决定使用IIf函数:
classEquipmentItem.ReplacementTo = IIf(IsNothing(cmbReplcmnt.SelectedItem.ToString), classEquipmentItem.ReplacementTo = "", cmbReplcmnt.SelectedItem.ToString)
不幸的是我仍然收到错误
我尝试使用Try-Catch并且它有效,但我不想依赖Try-Catch,所以我想知道还有另一种方法可以解决这个问题吗?
答案 0 :(得分:1)
您可以尝试使用SelectedValue
代替SelectedItem
属性。
IF IsNothing(cmbReplcmnt.SelectedItem) Then
classEquipmentItem.ReplacementTo=String.Empty
Else
classEquipmentItem.ReplacementTo=cmbReplcmnt.SelectedItem.ToString
'OR
'classEquipmentItem.ReplacementTo=cmbReplcmnt.SelectedValue.ToString
End If
或者,您可以使用IF或IIF
classEquipmentItem.ReplacementTo=IF(IsNothing(cmbReplcmnt.SelectedItem),
String.Empty,cmbReplcmnt.SelectedValue.ToString())
答案 1 :(得分:0)
您的问题是IsNothing(cmbReplcmnt.SelectedItem.ToString)
在.ToString
为SelectedItem
的情况下无法评估Nothing
,因此IsNothing
函数失败
您的固定代码应如下所示:
classEquipmentItem.ReplacementTo = If(IsNothing(cmbReplcmnt.SelectedItem), "", cmbReplcmnt.SelectedItem.ToString)
虽然比这更容易:
classEquipmentItem.ReplacementTo = CStr(cmbReplcmnt.SelectedItem)