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 :

Refresh de combox box


Sujet :

C#

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Par d�faut Refresh de combox box
    Bonjour !

    Lors de la cr�ation d'un User Component, je charge dans mes comboboxs leurs valeurs comme suit :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    using System;
    using System.Windows.Forms;
     
    namespace MyUserControls
    {
        public partial class Characters : UserControl
        {
            public Characters()
            {
                InitializeComponent();
                cb_element.DataSource = Enum.GetValues(typeof(Elements));
            }
     
            public enum Elements
            {
                Moon = 0, Sun = 1, Star = 2, Spirit = 4
            };
     
            public enum Moon
            {
                Moon = 0, Moonlight = 1, Lunar = 2
            };
     
            public enum Sun
            {
                Sun = 0, Sunlight = 1, Solar = 2
            };
     
            public enum Star
            {
                Star = 0, Starlight = 1, Stellar = 2
            };
     
            public enum Spirit
            {
                Spiritual = 0, Twilight = 1, Astral = 2
            };
     
            private void cb_element_SelectedIndexChanged(object sender, EventArgs e)
            {
                if (cb_element.SelectedIndex == 0)
                {
                    cb_level.DataSource = Enum.GetValues(typeof(Moon));
                    cb_level.Refresh();
                }
                if (cb_element.SelectedIndex == 1)
                {
                    cb_level.DataSource = Enum.GetValues(typeof(Moon));
                    cb_level.Refresh();
                }
                if (cb_element.SelectedIndex == 2)
                {
                    cb_level.DataSource = Enum.GetValues(typeof(Moon));
                    cb_level.Refresh();
                }
                if (cb_element.SelectedIndex == 3)
                {
                    cb_level.DataSource = Enum.GetValues(typeof(Moon));
                    cb_level.Refresh();
                }
            }
        }
    }
    Au premier chargement, les deux comboxbox se mettent � jour... mais lorsque je clique � nouveau pour changer la comboxbox, elle ne se met pas � nouveau � jour.

    Pourtant, j'ai v�rifi� avec messagebox, le selectedindex change bien...

    Je suis un peu perdue sur le pourquoi du comment ^^".

  2. #2
    Membre �m�rite

    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par d�faut
    Bonjour,

    Dans les if de ton SelectedIndexChanged (que tu pourrais transformer en switch soit dit en passant) tu n'utilises que Enum.GetValues(typeof(Moon)), tu ne cherches pas � mettre d'autres valeurs. Est ce normal ?

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Par d�faut
    Nope, j'ai fait un malencontreux copi�-coll�.

    Le code actuel est

    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
     
    private void cb_element_SelectedIndexChanged(object sender, EventArgs e)
            {
                if (cb_element.SelectedIndex == 0)
                {
                    cb_level.DataSource = Enum.GetValues(typeof(Moon));
                }
                if (cb_element.SelectedIndex == 1)
                {
                    cb_level.DataSource = Enum.GetValues(typeof(Sun));
                    cb_level.Update();
                }
                if (cb_element.SelectedIndex == 2)
                {
                    cb_level.DataSource = Enum.GetValues(typeof(Star));
                    cb_level.Refresh();
                }
                if (cb_element.SelectedIndex == 3)
                {
                    cb_level.DataSource = Enum.GetValues(typeof(Spirit));
                    cb_level.Refresh();
                }
            }
    Mais il se refuse tout de m�me � me donner le r�sultat escompt�.

    (J'avais copi� le code d'avant que je change les noms d'�num, pardon !)

    Ce serait plus propre avec un switch?

  4. #4
    Membre �m�rite

    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par d�faut
    Aucun soucis, c'est juste que des fois l'erreur est tellement grosse qu'on ne fait pas gaffe au copier coller :p

    Sinon, si j'ai bien compris, quand tu lances ton appli, la premi�re combobox se charge. Ensuite, tu s�lectionnes un item, et la deuxi�me combobox se charge avec les bons �l�ments.

    Par contre, tu as beau changer d'�l�ment apr�s �a ne change pas le contenu de ta seconde combobox, c'est bien �a ?

    J'avoue ne pas savoir d'o� �a vient mais pourquoi tu ne binderais pas ta deuxi�me combobox sur une Liste que tu remplirais selon la premi�re s�lection ?

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    using System;
    using System.Windows.Forms;
     
    namespace MyUserControls
    {
        public partial class Characters : UserControl
        {
            public Characters()
            {
                InitializeComponent();
                cb_element.DataSource = Enum.GetValues(typeof(Elements));
                cb_level.DataSource = list;
            }
     
            private ArrayList myList = new ArrayList();
     
            public enum Elements
            {
                Moon = 0, Sun = 1, Star = 2, Spirit = 4
            };
     
            public enum Moon
            {
                Moon = 0, Moonlight = 1, Lunar = 2
            };
     
            public enum Sun
            {
                Sun = 0, Sunlight = 1, Solar = 2
            };
     
            public enum Star
            {
                Star = 0, Starlight = 1, Stellar = 2
            };
     
            public enum Spirit
            {
                Spiritual = 0, Twilight = 1, Astral = 2
            };
     
            private void cb_element_SelectedIndexChanged(object sender, EventArgs e)
            {
                    list.Clear();
     
                    switch(cb_element.SelectedIndex)
                    {
                            case 0:
                                list.AddRange(Enum.GetValues(typeof(Moon)));
                            case 1:
                                list.AddRange(Enum.GetValues(typeof(Sun)));
                            case 2:
                                list.AddRange(Enum.GetValues(typeof(Star)));
                            case 3:
                                list.AddRange(Enum.GetValues(typeof(Spirit)));
                    }
            }
        }
    }

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Par d�faut
    C'�tait bien �a.

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    using System;
    using System.Windows.Forms;
     
    namespace MyUserControls
    {
        public partial class Characters : UserControl
        {
            public Characters()
            {
                InitializeComponent();
                cb_element.DataSource = Enum.GetValues(typeof(Elements));
            }
     
            public enum Elements
            {
                Moon = 0, Sun = 1, Star = 2, Spirit = 4
            };
     
            public enum Moon
            {
                Moon = 0, Moonlight = 1, Lunar = 2
            };
     
            public enum Sun
            {
                Sun = 0, Sunlight = 1, Solar = 2
            };
     
            public enum Star
            {
                Star = 0, Starlight = 1, Stellar = 2
            };
     
            public enum Spirit
            {
                Spiritual = 0, Twilight = 1, Astral = 2
            };
     
            private void cb_element_SelectedIndexChanged(object sender, EventArgs e)
            {
     
                switch (cb_element.SelectedIndex)
                {
                    case 0:
                        cb_level.Enabled = true;
                        cb_level.DataSource = Enum.GetValues(typeof(Moon));
                        cb_level.Update();
                        break;
                    case 1:
                        cb_level.Enabled = true;
                        cb_level.DataSource = Enum.GetValues(typeof(Sun));
                        cb_level.Update();
                        break;
                    case 2:
                        cb_level.Enabled = true;
                        cb_level.DataSource = Enum.GetValues(typeof(Star));
                        cb_level.Refresh();
                        break;
                    case 3:
                        cb_level.Enabled = true;
                        cb_level.DataSource = Enum.GetValues(typeof(Spirit));
                        cb_level.Refresh();
                        break;
                    default:
                        cb_level.Enabled = false;
                        cb_level.Refresh();
                        break;
                }
            }
        }
    }
    c'est pas si diff�rent de ce que j'avais fait avec les ifs (pour ne pas dire identique) mais �a marche avec �a. Si je remets �a dans les ifs, il merde � nouveau sur la recharge de la combobox... donc � priori, y'a un truc � creuser l� mais je vois pas quoi.

    Par contre le coup du liste ( je l'ai tent�) il aime pas du tout, faudra que je vois pourquoi... �a peut �tre une solution int�ressante � garder sous la main pour des cas de figure o� �a aidera !

    Seul b�mol : j'ai pas encore trouver comment faire pour vider la combobox et virer son databinding... mais bon, je finirais bien par trouver je suppose.

  6. #6
    Membre �m�rite

    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par d�faut
    C'est bizarre, si tu remets les if, il ne marche plus ? As-tu essay� de debug en pas � pas pour voir ce que contenaient tes variables ?

    Ravi de t'avoir aid�, mais j'avoue ne pas vraiment savoir comment

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    114
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 114
    Par d�faut
    Oui, avec les if, il se remet � ne plus vouloir changer les combos en cascade et moi non plus je sais pas pourquoi.

    Mais vu que le switch case fonctionne, j'utilise le switch case et �a passe nickel.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Combox Box + fichier
    Par Panam�en dans le forum C++Builder
    R�ponses: 23
    Dernier message: 20/01/2008, 19h52
  2. Ajouter une combox box � une page web
    Par parano dans le forum Web
    R�ponses: 0
    Dernier message: 25/11/2007, 18h10
  3. Combox box et recherche
    Par fixfix dans le forum VB 6 et ant�rieur
    R�ponses: 3
    Dernier message: 07/03/2007, 12h34
  4. Pop-up d'une dialog box a partir d'un bouton
    Par bobbyjack dans le forum MFC
    R�ponses: 21
    Dernier message: 13/09/2005, 15h32
  5. question sur les message box !
    Par krown dans le forum Langage
    R�ponses: 7
    Dernier message: 02/08/2002, 16h11

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