我有2个组合框的形式。我想在combobox2中的列表更新时更改combobox1中的选定值。例如:ComboBox1具有移动公司的名称,ComboBox2包含该公司的所有移动电话的列表。
xeufq47z1#
假设您有一个将电话型号与其制造商相关联的字典:
Dictionary<string, string[]> brandsAndModels = new Dictionary<string, string[]>(); public void Form_Load(object sender, EventArgs e) { brandsAndModels["Samsung"] = new string[] { "Galaxy S", "Galaxy SII", "Galaxy SIII" }; brandsAndModels["HTC"] = new string[] { "Hero", "Desire HD" }; }
您可以获取要在左侧组合框中显示的项目,如下所示:
foreach (string brand in brandsAndModels.Keys) comboBox1.Items.Add(brand);
此操作只能执行一次,例如在窗体的Load事件中。brandsAndModels字典必须是示例变量,而不是局部变量,因为我们稍后需要访问它。然后,您必须为SelectedIndexChanged事件分配一个事件处理程序,在该事件中,您将第二个组合框中的项替换为所选品牌的数组中的项:
Load
brandsAndModels
SelectedIndexChanged
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { comboBox2.Items.Clear(); if (comboBox1.SelectedIndex > -1) { string brand = brandsAndModels.Keys.ElementAt(comboBox1.SelectedIndex); comboBox2.Items.AddRange(brandsAndModels[brand]); } }
如果所有这些都来自数据库,那么使用数据绑定会更好,正如我在评论中链接到您的问题的问题的答案中所描述的那样。
kyxcudwk2#
您必须处理combobox的SelectedIndexChanged事件才能实现这一点
ig9co6j13#
你看起来很新,我会一步一步地给你解释。1.右键单击ComboBox 1并选择属性。1.这将打开属性面板。1.从属性面板顶部选择事件按钮。1.将显示与组合框相关的所有事件列表。1.从此列表中双击SelectedIndexChanged。1.将创建私有void组合框1_SelectedIndexChanged(对象发送方,事件参数e){}您可以在此之后使用以下代码。
Dictionary<string, string[]> models = new Dictionary<string, string[]>(); public Form1() { InitializeComponent(); //initializing combobox1 comboBox1.Items.Add("Select Company"); comboBox1.Items.Add("HTC"); comboBox1.Items.Add("Nokia"); comboBox1.Items.Add("Sony"); //select the selected index of combobox1 comboBox1.SelectedIndex = 0; //initializing model list for each brand models["Sony"] = new string[] { "Xperia S", "Xperia U", "Xperia P" }; models["HTC"] = new string[] { "WildFire", "Desire HD" }; models["Nokia"] = new string[] { "N97", "N97 Mini" }; } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { comboBox2.Items.Clear(); if (comboBox1.SelectedIndex > -1) { string brand = comboBox1.SelectedItem.ToString(); if(brand != "" && comboBox1.SelectedIndex > 0) foreach (string model in models[brand]) comboBox2.Items.Add(model); } }
3条答案
按热度按时间xeufq47z1#
假设您有一个将电话型号与其制造商相关联的字典:
您可以获取要在左侧组合框中显示的项目,如下所示:
此操作只能执行一次,例如在窗体的
Load
事件中。brandsAndModels
字典必须是示例变量,而不是局部变量,因为我们稍后需要访问它。然后,您必须为
SelectedIndexChanged
事件分配一个事件处理程序,在该事件中,您将第二个组合框中的项替换为所选品牌的数组中的项:如果所有这些都来自数据库,那么使用数据绑定会更好,正如我在评论中链接到您的问题的问题的答案中所描述的那样。
kyxcudwk2#
您必须处理combobox的
SelectedIndexChanged
事件才能实现这一点ig9co6j13#
你看起来很新,我会一步一步地给你解释。
1.右键单击ComboBox 1并选择属性。
1.这将打开属性面板。
1.从属性面板顶部选择事件按钮。
1.将显示与组合框相关的所有事件列表。
1.从此列表中双击SelectedIndexChanged。
1.将创建私有void组合框1_SelectedIndexChanged(对象发送方,事件参数e){}
您可以在此之后使用以下代码。