2010-07-08 4 views
1

Comment ajouter des contrôles dans le contrôle des parents J'utilise C# application WindowsC# utilisateur contrôle

J'ai une boîte de groupe y compris le contrôle de l'utilisateur et la boîte de groupe de cases à cocher, les contrôles obtient activé ou désactivé sur la base de la propriété vérifiée de contrôle boîte maintenant lorsque vous utilisez ce contrôle dans une autre application comment puis-je ajouter des contrôles dans la zone de groupe ?? afin qu'ils puissent être activés o désactivés dans mon application

+0

Pourriez-vous poster quelques exemples de ce que vous avez déjà fait? – mwright

+0

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

+0

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

Répondre

1

J'ai fini par faire un contrôle utilisateur, dans lequel j'ai ajouté une boîte de groupe à l'intérieur de la case à cocher. La zone de groupe est donc activée et désactivée en fonction de la case à cocher.

3

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.

+0

merci pour la réponse je sais bien comment ajouter des contrôles et moi avons effectivement fait une usercontrol qui a un groupbox et une case à cocher maintenant je veux utiliser ce usercontrol dans ma demande et il i vouloir ajouter des contrôles dans mon usercontrol est-ce vraiment possible ?? – MehaJain

+0

Il semble que vous souhaitiez ajouter des contrôles à votre contrôle utilisateur après la conception, c'est-à-dire par programmation. Vous devez fournir un mécanisme dans votre contrôle utilisateur qui vous permet d'ajouter des contrôles supplémentaires. Je vais éditer ma réponse avec un exemple. – JYelton

+0

yaah vous l'avez bien bt pouvez-vous plz dire comment puis-je faire cela je suis un nouveau programmeur ce que je devrais faire ?? – MehaJain

Questions connexes