如何使用从 C "comboboxA"窗口中进行选择来更改"comboboxB"的项目源#



两个组合框通过代码动态地添加到Windows窗体中。现在,基于组合框a的选择,我想改变组合框b的项目来源。

下面是一些片段

动态添加组合框

string[] comboboxAitemsource = { "1", "2", "3", "4"};
string[] itemsource_1 = { "11", "12", "13", "14"};
string[] itemsource_2 = { "21", "22", "23", "24"};
string[] itemsource_3 = { "31", "32", "33", "34"};
string[] itemsource_4 = { "41", "42", "43", "44"};
int left_margin = 10, top_margin = margin, margin_inc = 40, sec_left_margin = 300;
System.Windows.Controls.Label ComboboxAlabel = new System.Windows.Controls.ComboboxAlabel();
ComboboxAlabel.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; ;
ComboboxAlabel.VerticalAlignment = VerticalAlignment.Top;
ComboboxAlabel.Name = "typeComboboxAlabel";
ComboboxAlabel.Content = "COMBOBOX A";
ComboboxAlabel.Height = 40;
ComboboxAlabel.Margin = new Thickness((double)left_margin, (double)top_margin, (double)10, (double)0);
grid.Children.Add(ComboboxAlabel);

System.Windows.Controls.ComboBox comboboxA = new System.Windows.Controls.ComboBox();
comboboxA.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; ;
comboboxA.VerticalAlignment = VerticalAlignment.Top;
comboboxA.Name = "typeCombobox";
comboboxA.Height = 20;
comboboxA.Width = 250;
comboboxA.Margin = new Thickness((double)sec_left_margin, (double)top_margin, (double)10, (double)0);
comboboxA.ItemsSource = comboboxAitemsource;
comboboxA.SelectedIndex = 0;
comboboxA.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(typeCombobox_SelectionChangedEventHandler);
top_margin = top_margin + margin_inc;
grid.Children.Add(comboboxA);

System.Windows.Controls.Label comboboxBlabel = new System.Windows.Controls.Label();
comboboxBlabel.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
comboboxBlabel.VerticalAlignment = VerticalAlignment.Top;
comboboxBlabel.Name = "typeLabelUpdate";
comboboxBlabel.Content = "COMBOBOX B";
comboboxBlabel.Height = 40;
comboboxBlabel.Margin = new Thickness((double)left_margin, (double)top_margin, (double)10, (double)0);
grid.Children.Add(comboboxBlabel);
System.Windows.Controls.ComboBox comboboxB = new System.Windows.Controls.ComboBox();
comboboxB.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
comboboxB.VerticalAlignment = VerticalAlignment.Top;
comboboxB.Name = "typeComboBoxUpdate";
comboboxB.Height = 20;
comboboxB.Width = 250;
comboboxB.Margin = new Thickness((double)sec_left_margin, (double)top_margin, (double)10, (double)0);
comboboxB.ItemsSource = itemsource_1;
comboboxB.SelectedIndex = 0;
top_margin = top_margin + margin_inc;
grid.Children.Add(comboboxB);

组合框A的事件处理程序

private void typeCombobox_SelectionChangedEventHandler(object sender, EventArgs e)
{
ComboBox comboBox = (ComboBox)sender;

}

默认组合框B的项目源为itemsource_1,但当组合框A上的选择发生变化时,组合框B的项目源应根据选择发生变化。

例如,如果组合框A的选择更改为4,则组合框B的项目源应更改为itemsource_4。

我已经添加了一个事件处理程序,但我无法访问事件处理程序中的组合框b。任何帮助都将是非常感激的!

private void d()
{
string[] comboboxAitemsource = { "1", "2", "3", "4" };
string[] itemsource_1 = { "11", "12", "13", "14" };
string[] itemsource_2 = { "21", "22", "23", "24" };
string[] itemsource_3 = { "31", "32", "33", "34" };
string[] itemsource_4 = { "41", "42", "43", "44" };
int left_margin = 10, top_margin = margin, margin_inc = 40, sec_left_margin = 300;
System.Windows.Controls.Label ComboboxAlabel = new System.Windows.Controls.ComboboxAlabel();
ComboboxAlabel.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; ;
ComboboxAlabel.VerticalAlignment = VerticalAlignment.Top;
ComboboxAlabel.Name = "typeComboboxAlabel";
ComboboxAlabel.Content = "COMBOBOX A";
ComboboxAlabel.Height = 40;
ComboboxAlabel.Margin = new Thickness((double)left_margin, (double)top_margin, (double)10, (double)0);
grid.Children.Add(ComboboxAlabel);

System.Windows.Controls.ComboBox comboboxA = new System.Windows.Controls.ComboBox();
comboboxA.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; ;
comboboxA.VerticalAlignment = VerticalAlignment.Top;
comboboxA.Name = "typeCombobox";
comboboxA.Height = 20;
comboboxA.Width = 250;
comboboxA.Margin = new Thickness((double)sec_left_margin, (double)top_margin, (double)10, (double)0);
comboboxA.ItemsSource = comboboxAitemsource;
comboboxA.SelectedIndex = 0;
comboboxA.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(typeCombobox_SelectionChangedEventHandler);
top_margin = top_margin + margin_inc;
grid.Children.Add(comboboxA);
System.Windows.Controls.Label comboboxBlabel = new System.Windows.Controls.Label();
comboboxBlabel.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
comboboxBlabel.VerticalAlignment = VerticalAlignment.Top;
comboboxBlabel.Name = "typeLabelUpdate";
comboboxBlabel.Content = "COMBOBOX B";
comboboxBlabel.Height = 40;
comboboxBlabel.Margin = new Thickness((double)left_margin, (double)top_margin, (double)10, (double)0);
grid.Children.Add(comboboxBlabel);
System.Windows.Controls.ComboBox comboboxB = new System.Windows.Controls.ComboBox();
comboboxB.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
comboboxB.VerticalAlignment = VerticalAlignment.Top;
comboboxB.Name = "typeComboBoxUpdate";
comboboxB.Height = 20;
comboboxB.Width = 250;
comboboxB.Margin = new Thickness((double)sec_left_margin, (double)top_margin, (double)10, (double)0);
comboboxB.ItemsSource = itemsource_1;
comboboxB.SelectedIndex = 0;
top_margin = top_margin + margin_inc;
grid.Children.Add(comboboxB);
comboboxA.SelectedIndexChanged += (s, e) => {
comboboxB.Items.Clear();
comboboxB.Items.AddRange(itemsource_1);
};
}

我想:

private void comboxa_SelectedIndexChanged(object sender, EventArgs e)
{
comboxb.Items.Clear();
comboxb.Items.AddRange(itemsource_1);
}

最新更新