在下拉列表中有这些类型  当我运行程序时 出现一个下拉列表 当我选择下拉列表中什么样的类型时 
他就要加载什么样的控件 但我改变时 又要把原先的隐藏 加载一个新的想对应的控件   底下时当选择类型时加载的控件 但不知道 在改变下拉列表中值时 怎么隐藏 控件!!! 
private void cmbSelect_SelectedIndexChanged(object sender, EventArgs e) 
        { 
              this.txtResult.Text = ""; 
            if (this.cmbSelect.SelectedIndex == 0)//money类型 
            {             
                    txtMoney = new TextBox(); 
                    this.Controls.Add(txtMoney); 
                    txtMoney.Name = "txtMoney"; 
                    txtMoney.Size = new System.Drawing.Size(150, 21); 
                    txtMoney.TabIndex = 3; 
                    txtMoney.Location = new Point(label1.Location.X + 60, label1.Location.Y + 30); 
                    txtMoney.TextChanged += new System.EventHandler(this.txtMoney_TextChanged); 
                }  
              //可当下拉列表又改变时他要加载一个checklistbox 控件 上面那个隐藏 
            if (this.cmbSelect.SelectedIndex == 2)//check 
            { 
             
                chkLSelect = new CheckedListBox(); 
                this.Controls.Add(chkLSelect); 
                chkLSelect.CheckOnClick = true; 
                chkLSelect.FormattingEnabled = true; 
                chkLSelect.Name = "chkLSelect"; 
                chkLSelect.Size = new System.Drawing.Size(120, 52); 
                chkLSelect.TabIndex = 8; 
                chkLSelect.Location = new Point(label1.Location.X + 60, label1.Location.Y + 30); 
                chkLSelect.SelectedIndexChanged += new System.EventHandler(this.chkLSelect_SelectedIndexChanged); 
                
                chkLSelect.Items.Add("中国"); 
                chkLSelect.Items.Add("美国"); 
                chkLSelect.Items.Add("日本");  //下拉列表又改变时上面两个都要隐藏 
            if (this.cmbSelect.SelectedIndex == 3)//datetime类型 
            { 
                dtpDateTime = new DateTimePicker(); 
                this.Controls.Add(dtpDateTime); 
                dtpDateTime.Name = "dtpDateTime"; 
                dtpDateTime.Size = new System.Drawing.Size(121, 20); 
                dtpDateTime.TabIndex = 0; 
                dtpDateTime.Location = new Point(label1.Location.X + 60, label1.Location.Y + 30); 
                dtpDateTime.ValueChanged += new System.EventHandler(this.dtpDateTime_ValueChanged);           
               
                this.txtResult.Text = dtpDateTime.Value.ToString(); 
            } 
         }

解决方案 »

  1.   

    搞不懂你的意思,控件隐藏
    控件名称.Visible = false;
      

  2.   

    private void cmbSelect_SelectedIndexChanged(object sender, EventArgs e)
    {
        this.txtResult.Text = "";
        // 判断之前先清理一遍。
        if (txtMoney != null)
        {
            txtMoney.Dispose();
            txtMoney = null;
        }
        if (chkLSelect != null)
        {
            chkLSelect.Dispose();
            chkLSelect = null;
        }
        if (dtpDateTime != null)
        {
            dtpDateTime.Dispose();
            dtpDateTime = null;
        }
        //....
    }
      

  3.   

    放一个PANEL控件,用来显示控件,每次加载不同控件,先把PANEL.CONTROLS清空,然后再加载,则已清除的对象不会显示,只显示新加载的.如果重复加载,在WINFORM中只需记住ID即可,在WEBFORM中需指定ID