我试图在我的组合框中检查一个值,但是它失败了,我的值永远不会匹配,我有以下警告:
可能的意外引用比较;若要获得值比较,请将左手侧转换为“string”类型。
private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (((ComboBox)sender).SelectedValue == "Floyd-Warshall")
{
MessageBox.Show("foobar");
谢谢。
发布于 2011-05-21 10:49:08
修复方法有多种,一种是转换为字符串,另一种是在SelectedValue上调用SelectedValue。
正如您所说的,其他一些建议的答案不起作用,您确定组合框中的项目实际上是一个字符串吗?
例如,这将适用于建议的修补程序:
<Window x:Class="ExerciseOne.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" xmlns:extern="clr-namespace:System;assembly=mscorlib">
<Grid>
<ComboBox SelectionChanged="ComboBox_SelectionChanged">
<ComboBox.Items>
<extern:String>Hello</extern:String>
<extern:String>Floyd-Warshall</extern:String>
</ComboBox.Items>
</ComboBox>
</Grid>
</Window>
但这不会:
<Window x:Class="ExerciseOne.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" xmlns:extern="clr-namespace:System;assembly=mscorlib">
<Grid>
<ComboBox SelectionChanged="ComboBox_SelectionChanged">
<ComboBox.Items>
<ComboBoxItem>Hello</ComboBoxItem>
<ComboBoxItem>Floyd-Warshall</ComboBoxItem>
</ComboBox.Items>
</ComboBox>
</Grid>
</Window>
通过在现有事件处理程序中运行以下代码,您可以快速确定是否存在这种情况:
MessageBox.Show(((ComboBox)sender).SelectedValue.GetType().ToString());
发布于 2011-05-21 10:43:53
SelectedValue的类型为object
,因此,即使它匹配相等操作将返回false的值,也必须将字符串与字符串进行比较,如下所示:
if (((ComboBox)sender).SelectedValue.ToString() == "Floyd-Warshall")
发布于 2011-05-21 10:40:39
必须添加SelectedValue ()的警告
https://stackoverflow.com/questions/6083689
复制相似问题