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 :

Filtrer ListBox avec Enum Problème [Débutant]


Sujet :

C#

  1. #1
    Invité
    Invité(e)
    Par défaut Filtrer ListBox avec Enum Problème
    Bonjour,
    alors voila j'ai une listbox qui contient ma class car

    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
     
        public class _Car
        {
            public enum car
            {
                [Description("Acura CL 3.2 Type-S `01")] chs0 = 1,
                [Description("Acura CL 3.2 Type-S `03")] chs1 = 2,
                [Description("Acura INTEGRA Type-R `01")] chs2 = 3,
                [Description("Acura NSX `04")] chs3 = 4,
                [Description("Acura NSX `91")] chs4 = 5,
                [Description("Acura NSX Coupe `97")] chs5 = 6,
                [Description("Acura RSX Type-S `04")] chs6 = 7
     
            }
        }
    une autre class pour Description

    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
     
     public static class EnumHelper
        {
            /// <summary>
            /// Returns the description of an enum decorated with a DescriptionAttribute
            /// </summary>
            /// <param name="value">An Enumeration value</param>
            /// <returns>The description of an enumeration value</returns>
            public static string GetDescription(this System.Enum value)
            {
                var description = value.ToString();
                var attribute = GetAttribute<System.ComponentModel.DescriptionAttribute>(value);
                if (attribute != null)
                {
                    description = attribute.Description;
                }
                return description;
            }
     
            public static T GetAttribute<T>(System.Enum value) where T : System.Attribute
            {
                var field = value.GetType().GetField(value.ToString());
                var attribute = ((T[])field.GetCustomAttributes(typeof(T), false)).FirstOrDefault();
                return attribute;
            }
        }
    donc je charge le tout comme ç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
     
            public Form1()
            {
                InitializeComponent();
                list();
            }
     
            public void list()
            {
                foreach (_Car.car value in Enum.GetValues(typeof(_Car.car)))
                {
                    listBox1.Items.Add(value.GetDescription());
                }
            }
    ensuite je mais la textbox pour rechercher
    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
     
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
                var itemList = listBox1.Items.Cast<string>().ToList();
                if (itemList.Count > 0)
                {      
                    listBox1.Items.Clear();
                    listBox1.Items.AddRange(itemList.Where(i => i.Contains(textBox1.Text.Trim())).ToArray());
                }
                else if (textBox1.Text == "")
                {
                    listBox1.Items.Clear();
                    list();
                }
            }
    est la il y a un problème quand j'efface des lettres il n'actualise pas la liste même quand la textbox est vide quelqu’un aurait une idée svp ?
    Nom : Capture.PNG
Affichages : 236
Taille : 11,7 Ko

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 322
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 322
    Points : 1 928
    Points
    1 928
    Par défaut
    Ton programme ne passe par là où tu penses: ton nombre d'items est supérieur à 0, donc on ne va pas tester si ta texbox est vide, et tes chaines contiennent une chaine une chaine vide, donc on recharge tout.

    Fais du debug en pas à pas pour voir comment ton programme tourne et revoie tes conditions

  3. #3
    Invité
    Invité(e)
    Par défaut Filtrer ListBox avec Enum Problème
    Bonjour
    Alors j'ai fait un breakpoint sur la condition

    Nom : breakpoint2.png
Affichages : 216
Taille : 69,8 Ko

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 322
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 322
    Points : 1 928
    Points
    1 928
    Par défaut
    Et donc? tu n'arrives pas à la même conclusion que moi ?
    Que fais ton code:
    il charge dans itemlist les lignes de la listbox
    Si cette liste n'est pas vide (count>0), alors je vide ma listbox, et je remets ceux qui contiennent la chaine de ma textbox (Donc si ton textbox est vide à ce moment, il va recharger à l'identique car une chaine vide est toujours présente dans toutes les chaines (preuve Debug.WritleLine("je suis une chaine non vide".Contains("")) va t'afficher True).
    Si la liste est vide et que la texbox est vide, je vide la listbox et remets la liste des enums
    Donc tu rentrera ici que si ta liste est vide (donc qu'il y a eu un caractère non présent dans tes énums, comme "b") et que tu revides ta texbox.

  5. #5
    Invité
    Invité(e)
    Par défaut Filtrer ListBox avec Enum Problème
    Merci pour votre réponse donc j'ai regarder le code avec vos explication l'erreur vien donc de la condition j'ai
    compléter le code comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     if (itemList.Count > 0 && textBox1.Text != "")
    et ça marche merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème : Filtrer Listbox avec textbox
    Par clickandgo dans le forum VBA Access
    Réponses: 3
    Dernier message: 11/05/2013, 11h29
  2. problème listbox avec plusieurs colonnes
    Par djams9 dans le forum VB.NET
    Réponses: 12
    Dernier message: 07/07/2011, 10h38
  3. [XL-2007] Problème source Listbox avec condition
    Par ben59 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/11/2010, 13h44
  4. problème pour faire avancer un listbox avec un bouton suivant
    Par Namson dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 23/04/2007, 15h54
  5. regler un problème d'avertissement avec enum
    Par dietrich dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 19/03/2007, 16h09

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