Compartir a través de


Cómo: Agregar o quitar de una colección de controles en tiempo de ejecución

Las tareas comunes en el desarrollo de aplicaciones consisten en agregar y quitar controles de cualquier control de contenedor en los formularios (como el control Panel, el control GroupBox, o incluso el propio formulario). En tiempo de diseño, los controles se pueden arrastrar directamente a un panel o cuadro de grupo. En tiempo de ejecución, estos controles mantienen una colección, que hace un seguimiento de los controles que se colocan sobre ellos.

Nota:

El ejemplo de código siguiente se aplica a cualquier control que mantenga una colección de controles dentro de él.

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

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

  2. Establezca las propiedades del nuevo control.

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

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

    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. Use el Remove método para eliminar el control deseado de la colección del Controls panel.

  3. Llame al Dispose método para liberar todos los recursos utilizados por 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