J'ai plusieurs cases à cocher que j'ai créées dinamiquement à partir du code, je sais donc que je peux obtenir des cases à cocher à l'aide de: mais que je veux savoir ou que mon désir résultat est de savoir si toutes les cases à cocher de ma forme sont vérifiés quelque chose comme un revenu de Bool Vrai si toutes les cases à cocher sont cochées ou false si on manquait ... Comment puis-je réaliser cela? Cordialement P> bool allChecked = ...
3 Réponses :
simplement comme Je ne suis pas sûr de ce que Le problème est plus complexe si vous avez vos cases à cocher distribuées dans différents conteneurs de contrôle. Dans ce cas, vous pouvez utiliser une fonction récursive qui explore de manière itérative vos commandes et comptez combien d'entre eux sont vérifiés p> allcontrols code> (dans la poste originale non édité) est. Parce que cette propriété ne semble pas être une standard. Cet exemple utilise la collection de commandes standard présentes dans n'importe quel conteneur de commande, comme le formulaire de niveau supérieur P>
J'essaie mais ça retourne toujours une vraie valeur
Avez-vous eu vos cases à cocher dans une sorte de conteneur? (Un panneau ou une boîte de groupe) Dans ce cas, vous devez utiliser la collection de contrôles du conteneur.
Oui, ils sont à l'intérieur d'un FlowlayOntPanel
Puis changez ceci i> avec le nom de votre FlowLayOntPanel
Le problème est qu'ils sont à l'intérieur de FlowlayOntPanel, mais à l'intérieur de cela, j'ai des boîtes de groupe, chaque groupe de groupes a des cases à cocher différentes, j'ai une liste de groupbox, donc i itérer comme: foreach (var g in groupboxes) {} code>, mais maintenant , Comment puis-je savoir si toutes les cases à cocher sont cochées si elles sont dans différentes boîtes de groupe?
Cela nécessite une fonction récursive.
Si vous êtes sûr que des cases à cocher disponibles, vous pouvez utiliser
bool allChecked = false;
var checkBoxes = this.Controls.OfType<CheckBox>();
if (checkBoxes.Any())
allChecked = checkboxes.All(x => x.Checked);
J'essaie mais ça retourne toujours de la valeur réelle
Il revient vrai, mais cela peut être indésirable car aucune case à cocher ne se trouve dans votre .controls
Si vous souhaitez vérifier que toutes les cases à cocher du formulaire sont vérifiées, même celles qui appartiennent à d'autres commandes de conteneur, vous devrez itérer sur la collection code> contrôles code> de chaque contrôle (pas seulement ceux qui appartiennent à la Un moyen de faire cela consiste à écrire une méthode récursive qui prend une commande de conteneur (comme le formulaire code> code>) et examine toutes les commandes de sa collection . Si un contrôle contenue est une case à cocher code> et ce n'est pas coché, puis renvoyez par exemple: p> maintenant, si vous appelez cela et passez dans le formulaire principal comme étant Le contrôle du conteneur, vous examinerez toutes les commandes sur le formulaire, y compris dans tous les conteneurs (même des conteneurs imbriqués): p> formulaire code>). false code>. Sinon, effectuez une vérification récursive sur la collection code> de ce contrôle. Si aucun de ces chèques n'est faux, retournez true. P>
Vous ne pouvez pas simplement obtenir tous les contrôles décochés en inversant la logique de votre clause où la clause et vérifiez que le nombre est égal à zéro?
Est-ce que l'une des cases à cocher à l'intérieur des panneaux ou d'autres conteneurs?
Utilisation de votre code ci-dessus, vous pouvez démarrer avec
bool Allchecked = true; code> et à l'intérieur de votreforeach code> Ajouter les lignes:si (! Cochez la case.Checked) {ALCCHCHECKED = faux; Pause; } code>