带有 ComboBox 的 C# MessageBox 不起作用

C# MessageBox with ComboBox doesn't works

带有错误信息的最后一个MessageBox不起作用;该程序只是崩溃。我想使用 MessageBox 向用户表明他们忘记了 select 其中一项: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");
}

您可能遇到异常,因为您无法在空引用上实例化方法 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");
}