如何根据从其他框中选择的文本更改动态创建的组合框的显示项
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何根据从其他框中选择的文本更改动态创建的组合框的显示项相关的知识,希望对你有一定的参考价值。
在C#(win-form)上制作我的项目时,我遇到了一个问题,我必须在每次单击添加按钮(button1)时动态生成2个组合框,并排我必须绑定第二个组合框随着第一个框的索引更改,数据从数据库(sql server)中检索。这是我的代码,请帮忙
int _i = 0;int p = 0; int x=2; int y=0;
private void button1_Click(object sender, EventArgs e)
{
for (int i = p; i < x; i++)
{ ComboBox C1 = new ComboBox();
con.Open();
SqlDataAdapter adp = new SqlDataAdapter("select * from company ",con);
DataSet ds = new DataSet();
adp.Fill(ds, "Company");
C1.DataSource = ds.Tables["Company"];
C1.DisplayMember = "Company_Name";
con.Close();
C1.Location = new Point(160 + x, 30 * p + 10); ;
C1.Name = "Combo - " + p;
C1.Parent = this;
p++;
}
x = x + 2;
y++;
}
答案
回答这个问题,以防万一其他人面临同样的问题 -
创建组合框时,将selectedIndexChanged事件处理程序附加到它 -
private void button1_Click(object sender, EventArgs e)
{
ComboBox c1 = new ComboBox();
Point loc1 = new Point(50, 80);
Point loc2 = new Point(250, 80);
c1.Name = "combobox1";
c1.Items.Add("ABC");
c1.Items.Add("XYZ");
c1.Items.Add("PQR");
c1.SelectedIndexChanged += new EventHandler(combobox1__SelectedIndexChanged);
c1.Location = loc1;
ComboBox c2 = new ComboBox();
c2.Name = "combobox2";
c2.Location = loc2;
this.Controls.Add(c1);
this.Controls.Add(c2);
}
private void combobox1__SelectedIndexChanged(object sender, EventArgs e)
{
ComboBox dummy = sender as ComboBox;
if(dummy.SelectedItem == "ABC")
((ComboBox)dummy.Parent.Controls["combobox2"]).Items.Add("Your Intended items");
}
以上是关于如何根据从其他框中选择的文本更改动态创建的组合框的显示项的主要内容,如果未能解决你的问题,请参考以下文章
MS ACCESS - 如何在更改事件中获取未绑定组合框的当前列值