根据combobox4选择过滤combobox5项目

时间:2017-10-24 20:14:24

标签: c# filter combobox

我想基于之前的组合框选择过滤我的组合框 例如, combobox4包含 - 鞋子,手表,电视。 combobox5将包含 - rockport,addidas //鞋子选择 -                           tagheuer,劳力士//腕表选择 -                           索尼,三星//电视选择。

如果我要在combo4中选择电视,我希望combo5过滤到只有电视选择

如果我使用错误的术语,请提前道歉,我只是从C#开始

修改 目前,使用组合框属性上的实际表单设计设置了值 - 项目。 如果需要我可以更改它并硬编码 不使用任何sql。

1 个答案:

答案 0 :(得分:0)

对于我的解决方案,我决定使用代码而不是通过设计器来绑定组合框。我认为这是最好的,因为以后可以轻松编辑。

protected void bindMainComboBox()
{
    comboBox1.Items.Clear();
    comboBox1.Items.Add("Shoes");
    comboBox1.Items.Add("Watches");
    comboBox1.Items.Add("Tvs");
}

您需要在表单加载时调用它。

public Form1()
{
    InitializeComponent();
    bindMainComboBox();
}

您需要在第一个组合框上分配索引更改事件处理程序。如果你不知道该怎么做。右键单击组合框,单击“属性”。现在,在属性窗口中,您需要单击黄色电子螺栓(“事件”)。向下滚动直到找到SelectedIndexChanged并双击它右侧的空白字段。这将在代码中创建一个新部分来处理事件。

这是我的样子。我存储了第一个组合框的文本并将其传递给一个新方法,该方法将其绑定类似于第一个组合框的方式。

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    string selectedValue = comboBox1.Text;
    bindSecondComboBox(selectedValue);
}

这是方法。简单如果&否则ifs处理不同的选择并相应地绑定第二个组合框。

protected void bindSecondComboBox(string selValue)
{
    comboBox2.Items.Clear();
    if (selValue == "Shoes")
    {
        comboBox2.Items.Add("Rockport");
        comboBox2.Items.Add("Addidas");
        comboBox2.Items.Add("Nike");
    }
    else if (selValue == "Watches")
    {
        comboBox2.Items.Add("Tagheuer");
        comboBox2.Items.Add("Rolex");
        comboBox2.Items.Add("Victus");
    }
    else if (selValue == "Tvs")
    {
        comboBox2.Items.Add("Sony");
        comboBox2.Items.Add("Samsung");
        comboBox2.Items.Add("Toshiba");
    }
}

这是非常基本的代码,虽然有很多方法可以做到这一点。使用此方法可以在以后轻松编辑它,使其变得更加复杂和有能力。

由于ComboBox接收对象,你可以在其中存储任何你想要的东西,我会看here一个例子,说明他们如何创建一个新的Items类来处理文本/值对。您可以将它与数据表,SQL,数组,列表或任何可用于加载数据的内容配对,而无需像我的示例那样进行硬编码。

相关问题