Souhaitez-vous ajouter des contrôles via le code (par programmation) ou en utilisant le concepteur?
Si vous souhaitez ajouter un contrôle à un groupbox, un panneau ou un autre récipient, tout d'abord vous créez le contrôle:
Label myLabel = new Label();
myLabel.Name = "Name";
myLabel.Text = "Example";
myLabel.Location = new Point(10, 10);
Ensuite, ajoutez au conteneur en utilisant la propriété Controls du conteneur, via le module complémentaire méthode:
myGroupBox.Controls.Add(myLabel);
Enfin, vous pouvez utiliser l'état de votre case à cocher pour activer/désactiver le conteneur entier (et tous ses contrôles enfants). Vous pouvez utiliser un quelque part booléen, mais cela est l'idée de base:
En cas CheckChanged pour votre Checkbox, faites ceci:
myGroupBox.Enabled = myCheckBox.Checked;
Ou l'inverse, selon la façon dont vous voulez que l'état activé .
EDIT:
De votre commentaire, il semble que vous voulez ajouter des contrôles supplémentaires à un contrôle utilisateur existant après la conception. Vous devez fournir cette fonctionnalité dans une méthode publique.
public void AddControl(Control controlToAdd)
{
myGroupBox.Controls.Add(controlToAdd);
}
Fondamentalement exposer Controls.Add
de conteneur de contrôle utilisateur au code qui interagit avec votre contrôle utilisateur.
J'espère que c'est utile.
EDIT 2:
Voici le code affiché dans un commentaire:
foreach(Control ctrl in this.groupbox1.Controls)
{
if (ctrl != this.checkbox1)
{
ctrl.Enabled = this.checkbox1.Checked;
}
}
Ce itère à travers toutes les commandes, et active ou désactive tous sauf checkbox1 sur la base vérifié de checkbox1 Etat. Tout d'abord, si checkbox1 n'est pas un contrôle enfant dans groupbox1, l'instruction if qui assure que le contrôle actuel n'est pas checkbox1 est inutile. Ce ne sera jamais le cas, car foreach n'analyse que les contrôles enfants de groupbox1. Tant que checkbox1 est en dehors de groupbox1, il est omis de l'itération. Deuxièmement, il est beaucoup plus rapide et plus facile à maintenir si vous activez ou désactivez simplement la boîte de groupe entière. Tous les contrôles internes hériteront de l'état activé/désactivé.En utilisant vos noms de contrôle le code serait:
groupbox1.Enabled = checkbox1.Checked;
J'espère que je comprends votre question correctement.
Pourriez-vous poster quelques exemples de ce que vous avez déjà fait? – mwright
ok voici mon code dans usercontrol j'ai une boîte de groupe et une case à cocher puis je l'ai écrit le code suivant contrôle foreach ctrl dans this.groupbox1.controls { if (ctrl! = This.checkbox1) { ctrl.enabled = this.checkbox1.checked; } } ceci est mon contrôle maintenant je veux utiliser ce contrôle dans une autre application je veux savoir comment je peux ajouter des contrôles (panneaux, boîtes de groupes) à ce déjà le contrôle – MehaJain
Si vous souhaitez simplement ajouter des contrôles supplémentaires Pour le contrôle utilisateur lui-même, créez une méthode publique (similaire à celle de la partie modifiée de ma réponse) qui ajoute les contrôles au contrôle utilisateur (par exemple: 'this.Controls.Add') au lieu d'un conteneur. Réalisez, cependant, que les contrôles ajoutés seront difficiles à utiliser sans un type de code qui utilise leurs propriétés, et à son tour le rend disponible en tant que propriétés ou méthodes pour le code appelant. – JYelton