0

我有一个包含多个项目的组合框和一个具有表单焦点的按钮。问题是我需要更改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; ,我不会收到任何错误,但我的按钮也不起作用。

4

1 回答 1

3

好吧,如果SelectedItemnull,并且您尝试调用ToString()参考null,您将得到NullReferenceException

您需要在运行之前检查空值ToString()

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");
}
于 2013-09-06T13:06:47.913 回答