最近公司交了一个任务,修改一个项目达到想要的效果,进去以后发现取值是一个问题,各种无法公用实例化,后来仔细看发现原来之前写代码的用的是Controls来动态添加控件,后来发下原来我们需要去foreach循环Controls这个控件集,然后去遍历所有的控件,然后在遍历完了以后找到我们所需要的控件,这样就可以找到我们需要的值了
ComboBoxEx VariType = new ComboBoxEx(); ComboBoxEx VariMode = new ComboBoxEx(); TextBox VariValue = new TextBox(); int i = 0; private void buttonX1_Click(object sender, EventArgs e) { i++; //VariablesForm ComboBoxEx VariType = new ComboBoxEx(); ComboBoxEx VariMode = new ComboBoxEx(); TextBox VariValue = new TextBox(); try { #region 变量类型参数 VariType.DropDownStyle = ComboBoxStyle.DropDownList; VariType.Items.AddRange(Default.VariableType); VariType.SelectedIndex = 0; VariType.Width = 95; VariType.Top = buttonX1.Top; VariType.Left = 12; VariType.Name = "VariType" + i.ToString(); this.Controls.Add(VariType); #endregion #region 变量值 VariValue.Width = 160; VariValue.Top = buttonX1.Top; VariValue.Left = 113; VariValue.Name = "VariValue" + i.ToString(); this.Controls.Add(VariValue); #endregion #region 变量mode VariMode.DropDownStyle = ComboBoxStyle.DropDownList; VariMode.Items.AddRange(Default.VariableMode); VariMode.SelectedIndex = 0; VariMode.Width = 65; VariMode.Top = buttonX1.Top; VariMode.Left = 280; VariMode.Name = "VariMode" + i.ToString(); this.Controls.Add(VariMode); #endregion buttonX1.Top = buttonX1.Top + 37; buttonX2.Top = buttonX2.Top + 37; this.Height = this.Height + 37; //this.Size = new Size(300,); } catch (Exception ex) { MessageBox.Show(ex.Message); ; } } private void buttonX2_Click(object sender, EventArgs e) { foreach (Control control in this.Controls) { if (control.Name == "VariType1") { InitForm.VarType.Add(control.Text.ToString()); } else if (control.Name == "VariType2") { InitForm.VarType.Add(control.Text.ToString()); } else if (control.Name == "VariValue1") { InitForm.VarValue.Add(control.Text.ToString()); } else if (control.Name == "VariValue2") { InitForm.VarValue.Add(control.Text.ToString()); } else if (control.Name == "VariMode1") { InitForm.VarMode.Add(control.Text.ToString()); } else if (control.Name == "VariMode2") { InitForm.VarMode.Add(control.Text.ToString()); } } this.DialogResult = DialogResult.OK; this.Close(); }