我有一个包含多个项目的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;
我没有收到任何错误,但我的按钮也不起作用。
答案 0 :(得分:3)
好吧,如果SelectedItem
为null
,并且您尝试在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");
}