C # MessageBox с ComboBox не работает - PullRequest
0 голосов
/ 08 июня 2018

Последнее 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 голосов
/ 08 июня 2018

Вы, вероятно, получаете исключение, потому что вы не можете создать экземпляр метода ToString() по нулевой ссылке, исходя из вашего последнего утверждения else if, что значение typen.SelectedItem может потенциально быть нулевым, если ничего не выбрано.

Вы должны проверить, является ли значение 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");
}
...