Cómo: Agregar o quitar controles de una colección en tiempo de ejecución
Actualización: noviembre 2007
Las tareas comunes de desarrollo de una aplicación son la inclusión y eliminación de controles de un control de contenedores en formularios (como el control Panel o GroupBox o incluso el mismo formulario). En tiempo de diseño, los controles se pueden arrastrar directamente al panel o cuadro de grupo. En tiempo de ejecución, estos controles mantienen una colección Controls, que realiza el seguimiento de los controles que se colocan en ellos.
Nota: |
---|
Tenga en cuenta que el ejemplo siguiente se aplica a cualquier control que contenga una colección de controles. |
Para agregar un control a una colección mediante programación
Cree una instancia del control que se va a agregar.
Defina las propiedades del nuevo control.
Agregue el control a la colección Controls del control primario.
El ejemplo siguiente muestra cómo crear una instancia del control Button. Requiere que haya un control Panel en un formulario y que ya existe 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. Substite 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
Quite el controlador de eventos del evento. En Visual Basic, utilice la palabra clave RemoveHandler (Instrucción), en Visual C# utilice Operador -= (Referencia de C#).
Utilice el método Remove para eliminar el control deseado de la colección Controls del panel.
Llame al método Dispose 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(); } }