c#组合框.设置SelectedItem错误
本文关键字:SelectedItem 错误 设置 组合 | 更新日期: 2023-09-27 18:12:12
在comboBox_SelectedIndexChanged中使用
if (comboBox2.SelectedItem == "1")
{
MessageBoxEx.Show("Ok1");
}
if (comboBox2.SelectedItem == "2")
{
MessageBoxEx.Show("Ok2");
}
if (comboBox2.SelectedItem == "3")
{
MessageBoxEx.Show("Ok3");
}
if (comboBox2.SelectedItem == "4")
{
MessageBoxEx.Show("Ok4");
}
我得到警告"可能出现意外的引用比较;要获得值比较,请将左侧强制转换为键入"string",并且在单击该值时不会弹出消息框。需要做些什么来解决这个问题?
为SelectedItem属性添加ToString()
if (comboBox2.SelectedItem.ToString() == "1")
SelectedItem属性类型为Object,因此如果不显式转换为字符串,则无法与字符串进行比较。
但是我应该问,如何填充Items集合?项目是字符串类型吗?另外,不要假设SelectedIndexChanged仅在选中项时才会引发。
在尝试访问SelectedItem属性之前添加一个检查,如下所示
if(combobox2.SelectedItem != null)
{
// Start your checks on the selectedItem
if (comboBox2.SelectedItem.ToString() == "1")
{
MessageBoxEx.Show("Ok1");
}
..... and so on....
}
我们重写一下因为问题是SelectedItem
是object
而你比较的是string
。不如这样写:
var val = Convert.ToString(comboBox2.SelectedItem);
switch (val)
{
case "1":
break;
case "2":
break;
default:
break;
}
这也将允许您处理default
的情况下,你得到一个空字符串,如果SelectedItem
是null
。您不希望假设在SelectedItem
中总是有一个值。此外,如果SelectedItem
是null
,则,我提供的方法不会抛出异常。但是,这个语句comboBox2.SelectedItem.ToString()
将抛出一个NullReferenceException
。
好,根据您的注释,它偏离了代码示例,您有两种处理OR条件的方法。第一个是像这样利用switch
的下跌:
switch (val)
{
case "1":
case "2":
break;
default:
break;
}
在这个例子中,1
和2
都属于同一代码行。然而,如果你需要更健壮的分支,你将不得不使用if
语句——但是现在你将不会得到任何警告,你也不必担心NullReferenceException
。
您可以使用if (comboBox2.SelectedText == "3")
使用combobox2 . selecteitem . tostring ()
SelectedItem
是一个对象。这个对象包含一个String
属性。http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selecteditem.aspx
您正在尝试将对象与字符串("3")进行比较。编译器会警告您,因为. tostring()可能不会返回您所期望的结果。它警告你,这样你就可以采取适当的行动,以确保有一个好的比较。
在这种情况下,正如几乎所有人所说,只需使用SelectedItem.ToString()
您可以使用MessageBox.Show(comboBox2.SelectedItem.ToString());
,因为SelectedItem
是对象类型数据类型。所以你要把它转换成string