Comment : ajouter des contrôles dans une collection au moment de l'exécution, ou comment les supprimer
Mise à jour : novembre 2007
Les tâches courantes du développement d'applications incluent l'ajout et la suppression de contrôles dans un contrôle conteneur de vos formulaires (par exemple, le contrôle Panel ou GroupBox, voire le formulaire lui-même). Au moment du design, vous pouvez faire glisser des contrôles directement vers un panneau ou une zone de groupe. Au moment de l'exécution, ces contrôles gèrent une collection Controls, qui effectue le suivi des contrôles qui y sont placés.
Remarque : |
---|
L'exemple de code suivant s'applique à n'importe quel contrôle qui gère une collection de contrôles qui y sont contenus. |
Pour ajouter par programme un contrôle à une collection
Créez une instance du contrôle à ajouter.
Définissez les propriétés du nouveau contrôle.
Ajoutez le contrôle à la collection Controls du contrôle parent.
L'exemple de code suivant montre comment créer une instance du contrôle Button. Il nécessite l'utilisation d'un formulaire avec un contrôle Panel ; par ailleurs, la méthode de gestion d'événements pour le bouton en cours de création (NewPanelButton_Click) doit déjà exister.
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); }
Pour supprimer par programme des contrôles d'une collection
Supprimez le gestionnaire d'événements de l'événement. En Visual Basic, utilisez le mot clé RemoveHandler, instruction ; en Visual C#, utilisez -=, opérateur (Référence C#).
Utilisez la méthode Remove pour supprimer le contrôle souhaité de la collection Controls du panneau.
Appelez la méthode Dispose pour libérer toutes les ressources utilisées par le contrôle.
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(); } }