Visual studio 2013 -需要一些关于c#中不使用数据库的组合框的建议

本文关键字:数据库 组合 2013 studio Visual | 更新日期: 2023-09-27 18:01:58

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

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

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

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

任何关于我如何才能完成这将是伟大的想法!

Visual studio 2013 -需要一些关于c#中不使用数据库的组合框的建议

你可以这样做:

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;
}

一种方法是使用类。这允许您重写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;
}