Compartir a través de


Procedimiento para agregar o quitar controles de una colección en tiempo de ejecución

Entre las tareas comunes de desarrollo de una aplicación se incluyen la adición y la eliminación de controles de un control contenedor de los formularios (como el control Panel o GroupBox, o incluso el propio formulario). En tiempo de diseño, los controles se pueden arrastrar directamente al panel o grupo de cuadro. En tiempo de ejecución, estos controles mantienen una colección Controls, que realiza un seguimiento de los controles que se colocan en ellos.

Nota

El ejemplo de código siguiente se aplica a cualquier control que contenga una colección de controles.

Para agregar un control a una colección mediante programación

  1. Cree una instancia del control que se va a agregar.

  2. Defina las propiedades del nuevo control.

  3. Agregue el control a la colección Controls del control primario.

    En el ejemplo de código siguiente se muestra cómo crear una instancia del control Button. Requiere que haya un control Panel en un formulario y que ya exista el método de control de eventos para el botón que se va a crear, NewPanelButton_Click.

    Public NewPanelButton As New Button()  
    
    Public Sub AddNewControl()  
       ' The Add method will accept as a parameter any object that derives  
       ' from the Control class. In this case, it is a Button control.  
       Panel1.Controls.Add(NewPanelButton)  
       ' The event handler indicated for the Click event in the code
       ' below is used as an example. Substite the appropriate event  
       ' handler for your application.  
       AddHandler NewPanelButton.Click, AddressOf NewPanelButton_Click  
    End Sub  
    
    public Button newPanelButton = new Button();  
    
    public void addNewControl()  
    {
       // The Add method will accept as a parameter any object that derives  
       // from the Control class. In this case, it is a Button control.  
       panel1.Controls.Add(newPanelButton);  
       // The event handler indicated for the Click event in the code
       // below is used as an example. Substitute the appropriate event  
       // handler for your application.  
       this.newPanelButton.Click += new System.EventHandler(this. NewPanelButton_Click);  
    }  
    

Para quitar controles de una colección mediante programación

  1. Quite el controlador de eventos del evento. En Visual Basic, use la palabra clave RemoveHandler Statement; en C#, use el operador -=.

  2. Utilice el método Remove para eliminar el control deseado de la colección Controls del panel.

  3. Llame al método Dispose para liberar todos los recursos que usa el control.

    Public Sub RemoveControl()  
    ' NOTE: The code below uses the instance of
    ' the button (NewPanelButton) from the previous example.  
       If Panel1.Controls.Contains(NewPanelButton) Then  
          RemoveHandler NewPanelButton.Click, AddressOf _
             NewPanelButton_Click  
          Panel1.Controls.Remove(NewPanelButton)  
          NewPanelButton.Dispose()  
       End If  
    End Sub  
    
    private void removeControl(object sender, System.EventArgs e)  
    {  
    // NOTE: The code below uses the instance of
    // the button (newPanelButton) from the previous example.  
       if(panel1.Controls.Contains(newPanelButton))  
       {  
          this.newPanelButton.Click -= new System.EventHandler(this.
             NewPanelButton_Click);  
          panel1.Controls.Remove(newPanelButton);  
          newPanelButton.Dispose();  
       }  
    }  
    

Consulte también