我是VS2013和c#的新手,我正在尝试使用Windows窗体构建一个基本的模板程序。
我想要完成的是让一个产品列表的组合框填充第二个组合框,并为该产品提供可接受的版本。
因此,如果我从列表中选择productA,我将获得版本1,2和3作为选项,如果我选择productB,我将获得版本2.1,2.2和2.3作为选项。
我可以构建两个列表,因为没有很多产品或版本,但我不想使用数据库连接,因为我希望这是一个便携式工具。
关于如何实现这一点的任何想法都会很棒!
答案 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;
}