2

我有一个组合框,里面有一个东西列表……列表中的东西数量没有设置。它正在从文件夹中收集数据,您可以在组合框中拥有无限(有点夸张)的项目......我怎么知道用户选择了哪个选项?

我尝试了下面的代码,但它不起作用。我是 C# 的新手,不知道我做错了什么。

        comboBox1.SelectedIndex = 0;
        comboBox1.Refresh();

        if(comboBox1.SelectedIndex = 0)
        {
           //setting the path code goes here
        }
4

4 回答 4

5

要比较 C# 中的值,您需要使用“==”而不是“=”

if(comboBox1.SelectedIndex == 0) 
{ 
   //setting the path code goes here 
} 
于 2012-05-09T14:00:00.453 回答
3

使用ComboBox.SelectedItem 属性。

于 2012-05-09T14:00:10.123 回答
2

编辑:显然我想要快速回答而不是好的信息,我正在添加更多信息以使其更易于阅读

每次选择更改时都会触发组合框的事件。在设计器中选择您的组合框,然后选择事件选项卡并双击 SelectionChanged。

如果您只需要访问从中选择的内容,可以说单击按钮,您可以按照 Rahul 所述使用

Button1_Click(...)
{ 
    MessageBox.Show(comboBox1.SelectedItem.ToString()); 
}

或者如果您只是想访问当前显示在组合框中的文本

Button1_Click(...)
{ 
    MessageBox.Show(comboBox1.SelectedText); 
}
于 2012-05-09T14:06:26.913 回答
1

当您使用 = 运算符时,它将右侧设置为左侧,结果是右侧(也设置左侧)。

当您使用 == 运算符时,它会检查右手边是否等于左手边,结果是布尔值(真/假)。

int i = 10;
int j = 40;

Console.WriteLine(i == j); // false
Console.WriteLine(i); // 10
Console.WriteLine(j); // 40
Console.WriteLine(i = j); // 40
Console.WriteLine(i); // 40
Console.WriteLine(i == j); // true

所以一开始,您将 SelectedIndex 设置为 0,您可能不想这样做,因为您想知道用户选择了哪个索引。

因此,如果您要更改 SelectedIndex,您将无法知道用户选择了什么。

你需要的条件是这样的:

if (comboBox1.SelectedIndex == 0)
{
    // Selected item is item 0
}

当你这样做时:

if (comboBox1.SelectedIndex = 0)
{
}

实际发生的是 SelectedIndex 设置为 0,然后编译器尝试将 0 强制转换为布尔值(因为它在 if 条件内),这将导致编译错误。

于 2012-05-09T13:59:34.047 回答