未选择项目时的ComboBox异常

时间:2013-09-06 13:05:17

标签: c# winforms combobox

我有一个包含多个项目的ComboBox和一个具有Form焦点的按钮。 问题是我需要更改SelectedItem,否则我会收到NullReferenceException

comboBox.Text = "select";

try
{
    //if (comboBox.SelectedIndex == -1) return;

    string some_str = comboBox.SelectedItem.ToString(); // <-- Exception

    if (some_str.Contains("abcd"))
    {
        // ...
    }
}
catch (Exception sel)
{
    MessageBox.Show(sel.Message);
}

有没有办法避免这种情况?如果我使用if (comboBox.SelectedIndex == -1) return; 我没有收到任何错误,但我的按钮也不起作用。

1 个答案:

答案 0 :(得分:3)

好吧,如果SelectedItemnull,并且您尝试在ToString()引用上致电null,则会获得NullReferenceException

在运行ToString()

之前,您需要检查null
string some_str = combBox.SelectedItem == null ? String.Empty : comboBox.SelectedItem.ToString(); // <-- Exception

if (some_str.Contains("abcd"))
{
    // ...
}

if(comboBox.SelectedItem != null)
{
    string some_str = comboBox.SelectedItem.ToString(); // <-- Exception

    if (some_str.Contains("abcd"))
    {
        // ...
    }
}
else
{
     MessageBox.Show("Please select an item");
}