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
Creare un'istanza del controllo da aggiungere.
Impostare le proprietà del nuovo controllo.
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_Click
esista 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
Rimuovere il gestore eventi dall'evento. In Visual Basic usare la parola chiave RemoveHandler Statement; in C#, usare l'operatore -= .
Usare il metodo
Remove
per eliminare il controllo desiderato dalla raccolta del pannelloControls
.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
.NET Desktop feedback