listBox选中的项目

时间:2011-05-02 10:48:53

标签: c# winforms

我有三个listBox:

listBox1包含以下项目:水果和蔬菜。

listBox2具有以下项目:橙色,苹果,黄瓜和番茄。

listBox3具有以下项目:红色,绿色,黄色和橙色。

我想这样做,如果我在listBox1中选择Fruit我只想在listBox2中显示Orange和Apple,如果我在listBox2中选择Apple,我想以红色,绿色和黄色为例。

如果在listBox1中没有选择任何内容,则listBox2和3应为空,如果在listBox2中没有选择任何内容,则listBox3应为空。

有没有什么好方法可以选择/取消选择方法?

谢谢!

3 个答案:

答案 0 :(得分:1)

您需要定义组合框的OnSelectionChanged事件。

答案 1 :(得分:1)

你可以尝试

listBox1_SelectedIndexChanged(obj ... , sender e)
{
     if(listBox1.SelectedItem.ToString() == "Fruit")
     {
        listBox2.Items.Add("Orange");
        listBox2.Items.Add("Apple");
      }
     else if()
     {
        // other conditons
      }
}

listBox2_SelectedIndexChanged(obj ... , sender e)
{
     if(listBox2.SelectedItem.ToString() == "Apple")
     {
        listBox3.Items.Add("Red");
        listBox3.Items.Add("Green ");
      ........
      }
     else if()
     {
        // other conditons
      }
}

阅读http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.selectedindexchanged.aspx

答案 2 :(得分:1)

您可以尝试这样的事情,以便于理解将功能划分为功能。我使用win表单设计了此代码,但您也可以在List框中应用相同的代码。

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        switch(comboBox1.SelectedItem.ToString())
        {
            case "Fruit":
                FruitSelected();
                break;
            case "Vegetables":
                VegetableSelected();
                break;
            default:
                NoneSelected();
                break;
        }
    }
    private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
        // Similar code as above
    }
    protected void FruitSelected()
    {
        comboBox2.Items.Clear();
        comboBox2.Items.Add("Orange");
        comboBox2.Items.Add("Apple");
    }
    protected void VegetableSelected()
    {
        comboBox2.Items.Clear();
        comboBox2.Items.Add("Tomato");
        comboBox2.Items.Add("Cucumber");
    }
    protected void NoneSelected()
    {
        comboBox2.Items.Clear();
        comboBox3.Items.Clear();
    }
}

希望它有所帮助。