Como adicionar a ou remover de uma coleção de controles em tempo de execução
Tarefas comuns no desenvolvimento de aplicativos são adicionar e remover controles de qualquer controle de contêiner em seus formulários (como o controle ou GroupBox até mesmo o Panel próprio formulário). Em tempo de design, controles podem ser arrastados diretamente para um painel ou caixa de grupo. Em tempo de execução, esses controles mantêm uma coleção Controls
, que mantém o controle de quais controles são colocados neles.
Observação
O exemplo de código a seguir aplica-se a qualquer controle que mantém uma coleção de controles dentro dele.
Para adicionar um controle a uma coleção de forma programática
Crie uma instância do controle a ser adicionado.
Defina as propriedades do novo controle.
Adicione o controle à coleção
Controls
do controle pai.O exemplo de código a seguir mostra como criar uma instância do Button controle. Ele requer um formulário com um Panel controle e que o método de manipulação de eventos para o botão que está sendo criado, ,
NewPanelButton_Click
já 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 remover os controles de uma coleção de forma programática
Remova o manipulador de eventos do evento. No Visual Basic, use a palavra-chave RemoveHandler Statement ; em C#, use o operador -=.
Use o método
Remove
para excluir o controle desejado da coleçãoControls
do painel.Chame o Dispose método para liberar todos os recursos usados pelo controle.
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(); } }
Confira também
.NET Desktop feedback