在不使用数据库的情况下,需要对c#中的组合框提出一些建议

时间:2014-05-07 01:05:40

标签: c# visual-studio-2013

我是VS2013和c#的新手,我正在尝试使用Windows窗体构建一个基本的模板程序。

我想要完成的是让一个产品列表的组合框填充第二个组合框,并为该产品提供可接受的版本。

因此,如果我从列表中选择productA,我将获得版本1,2和3作为选项,如果我选择productB,我将获得版本2.1,2.2和2.3作为选项。

我可以构建两个列表,因为没有很多产品或版本,但我不想使用数据库连接,因为我希望这是一个便携式工具。

关于如何实现这一点的任何想法都会很棒!

2 个答案:

答案 0 :(得分:1)

你能做到的一种方法是:

comboBox2.Items.Clear();
switch (comboBox1.SelectedItem.ToString()) {
    case "ProductA":
        comboBox2.Items.AddRange(new string[]{"1", "2", "3"});
        break;
    case "ProductB":
        comboBox2.Items.AddRange(new string[]{"2.1", "2.2", "2.3"});
        break;
}

答案 1 :(得分:0)

一种方法是使用类。这允许您覆盖ToString方法并使用comboxes的数据源属性:

课程:

public class Product
{
    public class Version
    {
        public double vers = 0;
        public override string ToString()
        {
            return vers.ToString();
        }
    }
    public string name = "";
    public List<Version> versions = new List<Version>();
    public override string ToString()
    {
        return name;
    }
}

构建Product列表并填充一个组合框:

List<Product> products = new List<Product>()
{
    new Product{name = "ProductA",versions = new List<Product.Version>()
    {
        new Product.Version{vers = 1},
        new Product.Version{vers = 2},
        new Product.Version{vers = 3}
    }},
    new Product{name = "ProductB",versions = new List<Product.Version>()
    {
        new Product.Version{vers = 2.1},
        new Product.Version{vers = 2.2},
        new Product.Version{vers = 2.3}
    }}                
};
comboBox2.DataSource = products;

使用SelectedIndexChanged事件填充第二个组合框,其中包含在第一个组合框中选择的产品的版本列表:

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
    Product selectedproduct = (Product)comboBox2.SelectedItem;
    comboBox3.DataSource = selectedproduct.versions;
}