出现错误消息的最后一个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");
}
发布于 2018-06-08 07:34:06
您可能会得到一个异常,因为您不能在null引用上实例化方法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");
}
https://stackoverflow.com/questions/50751352
复制相似问题