Partilhar via


Como: Adicionar ou remover de uma coleção de controles em tempo de execução

As 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 Panel ou GroupBox, ou até mesmo o próprio formulário). Durante o design, os controlos 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 controla quais controles são colocados neles.

Observação

O exemplo de código a seguir se aplica a qualquer controle que mantém uma coleção de controles dentro dele.

Para adicionar um controle a uma coleção programaticamente

  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 controle Button. Ele requer um formulário com um controle Panel 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 controles de uma coleção programaticamente

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

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

  3. Chame o método Dispose 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();  
       }  
    }  
    

Ver também