Procedura: Aggiungere o rimuovere controlli da una raccolta in fase di esecuzione

Le attività comuni nello sviluppo di applicazioni sono l'aggiunta di controlli e la rimozione di controlli da qualsiasi controllo contenitore nei moduli, ad esempio il Panel controllo o GroupBox o anche il modulo stesso. In fase di progettazione è possibile trascinare i controlli direttamente in un pannello o una casella di gruppo. In fase di esecuzione questi controlli mantengono una raccolta Controls, che tiene traccia di quali controlli vengono posizionati su essi.

Nota

L'esempio di codice seguente si applica a qualsiasi controllo che mantiene una raccolta di controlli al suo interno.

Per aggiungere un controllo a una raccolta a livello di codice

  1. Creare un'istanza del controllo da aggiungere.

  2. Impostare le proprietà del nuovo controllo.

  3. Aggiungere il controllo alla raccolta Controls del controllo padre.

    Nell'esempio di codice seguente viene illustrato come creare un'istanza del Button controllo . Richiede un modulo con un Panel controllo e che il metodo di gestione degli eventi per il pulsante creato, , NewPanelButton_Clickesista già.

    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);  
    }  
    

Per rimuovere controlli da una raccolta a livello di codice

  1. Rimuovere il gestore eventi dall'evento. In Visual Basic usare la parola chiave RemoveHandler Statement; in C#, usare l'operatore -= .

  2. Usare il metodo Remove per eliminare il controllo desiderato dalla raccolta del pannello Controls.

  3. Chiamare il Dispose metodo per rilasciare tutte le risorse usate dal controllo .

    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();  
       }  
    }  
    

Vedi anche