消失的动态组合框

Disappearing Dynamic ComboBox

创建了以下代码来解决更大程序中的一些错误。也就是说,当我单击按钮添加一行时,会添加下一行,但之前创建的 ComboBox (cmboPhoneType) 会随着每次新的单击而消失。我错过了什么如何纠正?这可能与控件的名称有关吗?

using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace AddNewRowTest
{
    public partial class Form1 : Form
    {
      
        int leftControl = 1;
        ComboBox cmboPhoneType = new ComboBox();
       


        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            addLabels();
            btn_AddRow.PerformClick();
        }

        private void btn_AddRow_Click(object sender, EventArgs e)
        {
            

            //Connection Information redacted
            reConn.Open();

            MySqlCommand phoneTypeCommand = new MySqlCommand("Select * from lutable_phonetype order by Type;", reConn);
            MySqlDataAdapter phoneTypeAdapter = new MySqlDataAdapter();
            DataTable phoneTypeTable = new DataTable();
            phoneTypeAdapter.SelectCommand = phoneTypeCommand;
            phoneTypeAdapter.Fill(phoneTypeTable);
            
            this.Controls.Add(cmboPhoneType);
            cmboPhoneType.Top = leftControl * 36;
            cmboPhoneType.Left = 12;
            cmboPhoneType.Size = new Size(100, 20);
            cmboPhoneType.DataSource = phoneTypeTable;
            cmboPhoneType.DisplayMember = "Type";
            cmboPhoneType.ValueMember = "TypeID";
            cmboPhoneType.DataBindings.Add("SelectedValue", phoneTypeTable, "TypeID");
            cmboPhoneType.SelectedIndexChanged += new System.EventHandler(cmboPhoneType_SelectedIndexChanged);

            MaskedTextBox msktxtPhone = new MaskedTextBox();
            this.Controls.Add(msktxtPhone);
            msktxtPhone.Top = leftControl * 36;
            msktxtPhone.Left = 116;
            msktxtPhone.Size = new Size(100, 20);
            msktxtPhone.Mask = "(999) 000-0000";

            reConn.Close();
            leftControl++;
           
        }

        private void addLabels()
        {
            Label lblPhoneType = new Label();
            this.Controls.Add(lblPhoneType);
            lblPhoneType.Top = leftControl * 12;
            lblPhoneType.Left = 12;
            lblPhoneType.Text = "Phone Type";

            Label lblPhoneNumber = new Label();
            this.Controls.Add(lblPhoneNumber);
            lblPhoneNumber.Top = leftControl * 12;
            lblPhoneNumber.Left = 116;
            lblPhoneNumber.Text = "Phone Number";
        }

     
        private void cmboPhoneType_SelectedIndexChanged(object sender, EventArgs e)
        {
            cmboPhoneType.DataBindings.Clear();
        }
       
       
    }
}

您在点击事件中添加了一个“新建”蒙版文本框,但没有添加“新建”组合框。然后在您声明一个新的 cmbophonetype 之后,您需要将 this.Controls.Add(cmboPhoneType); 向下移动到添加 SelectedIndexChanged 事件处理程序之前。这将使 Combobox 保持可见,但您可能在分离所有事件时遇到更多问题。