Compartilhar via


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

  1. Crie uma instância do controle a ser adicionado.

  2. Defina as propriedades do novo controle.

  3. 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_Clickjá 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

  1. Remova o manipulador de eventos do evento. No Visual Basic, use a palavra-chave RemoveHandler Statement ; em C#, use o operador -=.

  2. Use o método Remove para excluir o controle desejado da coleção Controls do painel.

  3. 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