C# 基于用户选择动态更新组合框
我不确定回发在WinForms上是如何工作的,但我希望允许组合框根据用户选择进行更新 当前,当我更改第一个C# 基于用户选择动态更新组合框,c#,winforms,combobox,C#,Winforms,Combobox,我不确定回发在WinForms上是如何工作的,但我希望允许组合框根据用户选择进行更新 当前,当我更改第一个组合框的选择时,它不会更改第二个下拉列表中的项目。(默认情况下仅显示第一项) 你能以什么方式改变这一点 我所拥有的代码: public ContentUploader() { InitializeComponent(); using (SqlConnection con = new SqlConnection(conString)) { con.Ope
组合框的选择时,它不会更改第二个下拉列表中的项目。(默认情况下仅显示第一项)
你能以什么方式改变这一点
我所拥有的代码:
public ContentUploader()
{
InitializeComponent();
using (SqlConnection con = new SqlConnection(conString))
{
con.Open();
using (SqlDataAdapter sda = new SqlDataAdapter("SELECT ... re.OverallID = 1", conString))
{
DataTable dt = new DataTable();
sda.Fill(dt);
sections_drp.ValueMember = "ID";
sections_drp.DisplayMember = "DisplayName";
sections_drp.DataSource = dt;
}
}
sections_drp.SelectedIndexChanged += (o, e) => FillFirstChildren();
}
public void FillFirstChildren()
{
firstChild_drp.Items.Add("Select Item");
firstChild_drp.SelectedIndex = 0;
string sectionId = sections_drp.SelectedValue.ToString();
using (SqlConnection con = new SqlConnection(conString))
{
con.Open();
using (SqlDataAdapter sda = new SqlDataAdapter("SELECT ... em.ItemID = ("+ sectionId +")", conString))
{
DataTable dt = new DataTable();
sda.Fill(dt);
firstChild_drp.ValueMember = "ID";
firstChild_drp.DisplayMember = "DisplayName";
firstChild_drp.DataSource = dt;
}
}
FillSecondChildren();
}
Winforms
不包含回发。您需要连接到SelectedIndexChanged
(或项
或值
)事件以过滤第二个下拉列表
例如:
public void FillFirstChildren()
{
//Your Fill Logic Here
...
//Call FillSecondChildren on selection change
firstChild_drop.SelectedIndexChanged += (o, e) => FillSecondChildren();
}
使用第一个组合的选定索引更改事件填充second@kostasch. 如果我有多个组合,我会在前一个选择的索引更改事件中填充每个组合。你只需回答你的问题:)@Masriyah确切地说,每个组合框都会有一个不同的更改事件句柄,每个组合框的句柄SelectedIndexChanged
,我是否放置firstChild\u drop.SelectedIndexChanged+=(o,e)=>FillSecondChildren()使用
语句在内进行编码,然后在该方法的最后使用firstChild\u drp.DataSource=dt
。