0

フォームのフォーカスを持ついくつかの項目とボタンを含む ComboBox があります。問題は、 を変更する必要がある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

SelectedItemがの場合、参照nullを呼び出そうとすると、 が得られます。ToString()nullNullReferenceException

実行する前に、null を確認する必要があります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 に答える