IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

PB de gestion d'event sur checkbox c#wpf


Sujet :

C#

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Novembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Novembre 2016
    Messages : 4
    Par défaut PB de gestion d'event sur checkbox c#wpf
    Bonjour,

    Je galère sur un bout de code dans un petit programme que je tente de créer. J'assume d'être complétement débutant, mais j'ai déjà lu tout un tas de documentation pour arriver à mes fins, mais je pense que mon cerveau commence à bug !

    D'abord un petit bout en image du design de l'application :

    Nom : Capture d’écran 2021-05-19 213309.png
Affichages : 115
Taille : 21,9 Ko

    Pour la partie code qui me pose problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
            private void Chk_UID_IsSelected_Click(object sender, RoutedEventArgs e)
            {
     
                foreach (DataRowView dr in dgConnected_Users.ItemsSource)
                {
                    var Chkbox = sender as CheckBox;
     
                    if (Chkbox.IsChecked == true)
                    {
                        isAnyChecked++;
                    }
                    else
                    {
                        isAnyChecked--;
                    }
                }
     
                if (isAnyChecked > 0)
                {
                    UID_Disconnect.IsEnabled = true;
                }
                else
                {
                    UID_Disconnect.IsEnabled = false;
                }
     
            }
    Le problème est que si j'ai 2 lignes dans ma datagrid, et que je coche une seule ligne via la checkbox, 'isAnyChecked' renvoie la valeur 2. J'imagine que mon code compte le nombre de ligne de ma dg. Mais j'ai beau tourner différent code, rien de bien concluant. Selon mes tentatives, j'arrive à des appcrash...

    Le but est de faire en sorte que si des checkbox sont checked alors le bouton 'déconnecter le(s) utilisateur(s)' devienne actif.

    Si quelqu'un peut m'éclairer ?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Administrateur Systèmes, Clouds et Réseaux /CAO/DAO/Ingénierie Electrotechnique
    Inscrit en
    Décembre 2014
    Messages
    457
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur Systèmes, Clouds et Réseaux /CAO/DAO/Ingénierie Electrotechnique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 457
    Par défaut
    Salut,

    Bon j'ai moi même pas mal de bugs donc j'ai un peu la tête... donc excuse moi d'avance si je tape à côté de la plaque .

    Je ne prétends pas que ma solution va être la meilleure, si ça se trouve le datagrid est déjà équipé de ce qu'il faut.

    Je bosse plus avec des list et des items qu'avec des datagrid. Si tu spécifies dans ton code xaml, le datatemplate tu peux gérer les events plus finement et du coup remplir une liste à part où tu vas ajouter ou retirer, via ta checkbox, des utilisateurs.
    En fait chaque fois que tu vas cliquer sur une box, tu vas passer (en tag par exemple ), après il y a d'autres moyens, l'utilisateur à ajouter à ceux qu'il faut déconnecter.

    En ce qui concerne du coup ton button, du coup tu vas pouvoir utiliser une RoutedCommand ou RoutedUICommand, elles ont deux avantages (voire plus) elles ont une méthode "can" que tu peux utiliser, ce qu'il fait du coup que là tu vas pouvoir faire un e.CanResult (quelque chose comme ça) = MaListeADeconnecter.Any(); (utilisation de Linq). Du coup quand ta liste est vide le bouton est grisé. Au cas où tu ne connaisses pas les routeduicommand, il va falloir en faire une soit dans la partie code de ta fenêtre, ou dans une class externe (surtout si réutilisables), les déclarer entre les balises <Windows.CommandBindings> (le mieux). Tu peux donc ajouter (j'avais oublié de préciser l'avantage) des "gestures" (bon là j'imagine qu'au pire tu avais mis Default sur true pour le bouton). Et enfin tu devras aller dans le bouton et mettre Command="MaCommande" tel que (Namespace:Class.Command). le Namespace c'est par exemple "local:" en haut tu vas trouver "xmlns:local=".

    Et.. je crois que c'est tout en fait.

    Je trouve ça plus agréable qu'une boucle sur chaque élément et ça sépare vraiment le code du design, enfin je trouve.

    Après avant que j'oublie, je ne suis pas un pro de c#/wpf (pour le winform ça fait un moment donc j'espère que c'est pas en winform), juste un passionné qui programme pas mal. Donc si tu as des réponses de gens dont c'est le métier, n'hésite pas à les écouter plutôt que moi.

    Cordialement.

Discussions similaires

  1. [XL-2010] Gestion d'évènements sur Checkbox Dynamique
    Par pinhut dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/06/2015, 17h52
  2. [Débutant] Event sur l'activation d'un checkbox d'un dgv
    Par dragondumond dans le forum VB.NET
    Réponses: 5
    Dernier message: 14/05/2013, 16h57
  3. Gestion des event sur un menu
    Par Antoine_935 dans le forum wxPython
    Réponses: 5
    Dernier message: 10/09/2009, 12h01
  4. [Gestion mémoire] SetLength sur TDoubleDynArray
    Par MD Software dans le forum Langage
    Réponses: 14
    Dernier message: 24/04/2005, 21h11
  5. Problème sur CHECKBOX
    Par dede92 dans le forum Windows
    Réponses: 6
    Dernier message: 22/02/2005, 10h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo