使用ComboBox的C#MessageBox不起作用

时间:2018-06-07 23:16:36

标签: c# if-statement combobox messagebox

带有错误消息的最后一个MessageBox不起作用;程序崩溃了。我想使用MessageBox向用户显示他们忘记选择其中一项:Mountenbike,Rennrad或Faltrad。

if (typen.SelectedItem.ToString() == "Mountenbike")
{
    mb = new Mountenbike(artikelNr, name, ekPreis, vkPreis);
    mbCounter++;
    MessageBox.Show("Fertig");
}
else if (typen.SelectedItem.ToString() == "Rennrad")
{
    rr = new Rennrad(artikelNr, name, ekPreis, vkPreis);
    rrCounter++;
    MessageBox.Show("Fertig");
}
else if (typen.SelectedItem.ToString() == "Faltrad")
{
    fr = new Faltrad(artikelNr, name, ekPreis, vkPreis);
    frCounter++;
    MessageBox.Show("Fertig");
}
else if (typen.SelectedItem == null)
{
    MessageBox.Show("Error - Please enter xyz");
}

1 个答案:

答案 0 :(得分:2)

您可能会遇到异常,因为您无法在空引用上实例化方法ToString(),假设您的上一个else if语句假定typen.SelectedItem的值可能为null如果没有选择任何东西。

在实例化任何方法之前,您应首先检查typen.SelectedItem的值是否为null。这可以简单地完成:

if (typen.SelectedItem == null)
{
    MessageBox.Show("Error - Please enter xyz");
    return;
}

if (typen.SelectedItem.ToString() == "Mountenbike")
{
    mb = new Mountenbike(artikelNr, name, ekPreis, vkPreis);
    mbCounter++;
    MessageBox.Show("Fertig");
}
else if (typen.SelectedItem.ToString() == "Rennrad")
{
    rr = new Rennrad(artikelNr, name, ekPreis, vkPreis);
    rrCounter++;
    MessageBox.Show("Fertig");
}
else if (typen.SelectedItem.ToString() == "Faltrad")
{
    fr = new Faltrad(artikelNr, name, ekPreis, vkPreis);
    frCounter++;
    MessageBox.Show("Fertig");
}