Windows C# CheckedListBox Élément Coché La Gestion Des Événements
Je suis actuellement à l'élaboration d'une Fenêtre de l'application qui utilise CheckedListBoxes pour certains aspects du programme. Un problème que j'ai rencontré c'est que j'ai essayé de trouver l'événement qui est déclenché lorsqu'un élément est activé, de sorte que je peux activer un bouton de formulaire lorsque tout élément de la liste est vérifiée.
Problème est que j'ai essayé à l'aide de la suite;
private void clbAvailMods_ItemCheck(object sender, ItemCheckEventArgs e)
{
if(e.NewValue == CheckState.Checked)
{
btnInstall.Enabled = true;
}
}
mais quand j'ai mis un point d'arrêt sur l'instruction if, il n'est jamais déclenché lors de la vérification d'un élément dans la zone de liste.
Je fais quelque chose de mal ici?
- Il semble que le Concepteur de Formulaire avait un misregistered ItemCheck cas là. Qui a résolu le problème fondamental, mais maintenant, un nouveau a surgi qui apparaît de plus vague dans son contexte. Apparemment un élément coché l'état n'est pas mis à jour jusqu'à ce que après ItemCheck est fini. C'est une mauvaise chose car j'ai besoin de le premier élément vérifié pour déclencher la incarnée code. Étant donné que l'état n'est pas mis à jour jusqu'à ce que par la suite, je perds sur l'enregistrement immédiat de l'élément de test de tir.
Vous devez vous connecter pour publier un commentaire.
Un standard de Windows Forms astuce est de retarder l'exécution de code jusqu'à ce que tous les cas d'effets secondaires ont été achevés. Vous avez du retard de l'exécution de code à la commande.BeginInvoke() la méthode. Cela permettra de résoudre votre problème:
Vous pouvez utiliser le NewValue propriété pour mettre à jour manuellement CheckedItems.Le comte. C'est le code que j'utilise pour seulement activer un bouton quand il y a au moins un élément vérifié:
Un couple de potentiel de pièges. Je suppose que vous avez ajouté l'événement à travers les VS.Net GUI pour s'assurer qu'il est ajouté à la commande. Essayez de cliquer sur un élément à deux fois pour donner l'option mise au point et à nouveau pour activer la vérification de l'état - si vous souhaitez qu'un élément pour avoir sa vérifiez l'état activé, cliquez d'abord sur puis réglez le "CheckOnClick" true à la propriété.
Je pense que c'est l'événement SelectedIndexChanged mais je vais confirmer maintenant.
EDIT: événement SelectedIndexChanged fonctionne. Mais qu'est tir indépendamment de si la case a été cochée. De sorte que je ne puis vérifier l'état coché si vous voulez le faire.
Mais comme une part lorsque j'ai utilisé le ItemCheck cas il n'a le feu quand j'ai coché la case et pas seulement le texte.
Je sais que cela a été répondu il y a longtemps, mais je l'ai trouvé plus facile de gérer le MouseUp et KeyUp événements. Le CheckedItems.Propriété Count est exacte, quand ces événements sont déclenchés. Depuis ils font tous les deux la même chose, j'ai créé une méthode pour le travail et a appelé la méthode des deux gestionnaires d'événements.