[英]Calling SelectedIndexChanged Event for a dynamically created combobox in C# Windows Forms
我已经在C#中创建了一个Windows窗体。 我正在生成2个动态组合框,即MajorComboHead和SubComboHead。 我所做的是在创建控件时加载了MajorComboHead。 最终,我在MajorComboHead SelectedIndexChanged事件(在动态控件创建时动态创建的事件处理程序)上加载了SubComboHead。
SelectedIndexChanged事件可以正常工作,并且两个下拉列表都可以正常加载,但是问题是SubComboHead在MajorComboHead更改事件上而不是在加载项目。 在窗体加载时或在创建动态控件时,无法调用MajorComboHead_SelectedIndexChanged事件。
请帮助我。 以下是MajorComboHead_SelectedIndexChanged事件和动态控件创建函数的代码:-
public void dynamicControls()
{
.......................All about declaring and creating dynamic controls..................
con2.Open();
SqlDataAdapter adp1 = new SqlDataAdapter("select distinct * from MajorHead where(projectCode='" + projectId + "' AND (headName!='" + "Cash" + "' AND headName!='"+"Bank"+"'))", con2);
DataSet ds1 = new DataSet();
adp1.Fill(ds1, "MajorHead");
MajorCombohead.DataSource = ds1.Tables["MajorHead"];
MajorCombohead.DisplayMember = "headName";
MajorCombohead.ValueMember = "headCode";
con2.Close();
MajorCombohead.SelectedIndexChanged += new EventHandler(MajorCombohead_SelectedIndexChanged);
}
public void MajorCombohead_SelectedIndexChanged(object sender, EventArgs e)
{
ComboBox clicksave = sender as ComboBox;
string savename = clicksave.Name;
foreach (Control f1 in panel1.Controls)
{
if (f1.GetType() == typeof(ComboBox) && f1.Name == ("Maj" + savename))
{
//.....................loading sub head........................
foreach (Control f2 in panel1.Controls)
{
if (f2.GetType() == typeof(ComboBox) && f2.Name == ("Sub" + savename))
{
con1.Open();
SqlDataAdapter adp2 = new SqlDataAdapter("select distinct * from SubHead where(majorHeadName='" + f1.Text + "' AND projectCode='" + projectId + "')", con1);
DataSet ds2 = new DataSet();
adp2.Fill(ds2, "SubHead");
int countMeNow = ds2.Tables[0].Rows.Count;
((ComboBox)f2).DataSource = ds2.Tables["SubHead"];
((ComboBox)f2).DisplayMember = "headName";
((ComboBox)f2).ValueMember = "headCode";
con1.Close();
}
}
//.....................loading sub head........................
}
}
}
地点
MajorCombohead.SelectedIndexChanged += new EventHandler(MajorCombohead_SelectedIndexChanged);
在加载MajorCombohead之前(声明变量,添加事件侦听器,然后将其放在表单上)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.