Vb.net 如果组合框中的选定项为空,如何为其指定空字符串?运动模拟

Vb.net 如果组合框中的选定项为空,如何为其指定空字符串?运动模拟,vb.net,visual-studio,Vb.net,Visual Studio,我有一个叫做ReplacementTo的属性 我根据组合框中的selecteditem设置一个值,如下所示: classEquipmentItem.ReplacementTo = cmbReplcmnt.SelectedItem.ToString 现在我不能使用cmbReplcmnt.Text,因为我实际需要的是SelectedItem的值 所以问题是,如果用户将组合框保留为空,它将抛出一个null异常。 我决定使用IIf函数,然后: classEquipmentItem.Replacemen

我有一个叫做ReplacementTo的属性

我根据组合框中的selecteditem设置一个值,如下所示:

classEquipmentItem.ReplacementTo = cmbReplcmnt.SelectedItem.ToString
现在我不能使用cmbReplcmnt.Text,因为我实际需要的是SelectedItem的值

所以问题是,如果用户将组合框保留为空,它将抛出一个null异常。 我决定使用IIf函数,然后:

classEquipmentItem.ReplacementTo = IIf(IsNothing(cmbReplcmnt.SelectedItem.ToString), classEquipmentItem.ReplacementTo = "", cmbReplcmnt.SelectedItem.ToString)
不幸的是,我仍然得到了错误


我尝试使用Try-Catch来实现它,但我不想依赖Try-Catch,所以我想知道是否有其他方法可以解决这个问题?

您可以尝试
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())

您的问题是
IsNothing(cmprepcmnt.SelectedItem.ToString)

如果
SelectedItem
Nothing
,则无法计算
.ToString
,因此
IsNothing
功能失败

您的固定代码应如下所示:

classEquipmentItem.ReplacementTo = If(IsNothing(cmbReplcmnt.SelectedItem),  "", cmbReplcmnt.SelectedItem.ToString)
但比这更容易的是:

classEquipmentItem.ReplacementTo = CStr(cmbReplcmnt.SelectedItem)
我尝试使用IIF(),但仍然得到空错误。如果我使用if(),它需要另一个表达式