Procedura: aggiungere o rimuovere controlli da un insieme in fase di esecuzione

Nello sviluppo delle applicazioni, alcune attività comuni consistono nell'aggiunta e nella rimozione di controlli da un controllo contenitore sui form, ad esempio la classe Panel o il controllo GroupBox oppure il form stesso. In fase di progettazione è possibile trascinare direttamente i controlli su un pannello o una casella di gruppo. In fase di esecuzione i controlli mantengono un insieme Controls che tiene traccia dei controlli contenuti.

Nota

L'esempio di codice riportato di seguito è applicabile a qualsiasi controllo che mantenga un insieme di controlli al proprio interno.

Per aggiungere un controllo a un insieme a livello di codice

  1. Creare un'istanza del controllo da aggiungere.

  2. Impostare le proprietà del nuovo controllo.

  3. Aggiungere il controllo all'insieme Controls del controllo padre.

    Nell'esempio di codice riportato di seguito viene illustrato come creare un'istanza del controllo Button. Richiede un form con un controllo Panel e che il metodo per la gestione degli eventi per il pulsante che si crea, NewPanelButton_Click, sia già stato creato.

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

Per rimuovere i controlli da un insieme a livello di codice

  1. Rimuovere il gestore eventi dall'evento. In Visual Basic utilizzare la parola chiave Istruzione RemoveHandler, mentre in Visual C# utilizzare Operatore -= (Riferimenti per C#).

  2. Utilizzare il metodo Remove per eliminare il controllo desiderato dall'insieme Controls del pannello.

  3. Chiamare il metodo Dispose per liberare tutte le risorse utilizzate 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();
       }
    }
    

Vedere anche

Riferimenti

Panel

Altre risorse

Controllo Panel (Windows Form)