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

Windows Forms Discussion :

Probleme ListBox sur evenement Tick du Timer


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 161
    Points : 193
    Points
    193
    Par défaut Probleme ListBox sur evenement Tick du Timer
    Bonjour,

    Apres une petite recherche sur le forum , je n'ai pas trouvé de solution a mon probleme.
    Je debute avec les Windows Forms.

    La fenetre principale de mon appli lance un Timer losqu'elle est créé..
    Ce timer me permet de mettre a jour un ListBox. Cette partie fonctionne...
    Lors de la mise a jour, je souhaiterais re-sélectionné l'item qui etait sélectionné avant la mise a jour. (En fonction de l'item sélectionné, des TextBox sont remplis..)

  2. #2
    Rédacteur
    Avatar de benji_dv
    Homme Profil pro
    Architecte
    Inscrit en
    Juillet 2005
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 375
    Points : 1 276
    Points
    1 276
    Par défaut
    Bonjour,
    Dans la méthode qui met à jour la listbox place ceci avant la mise à jour de la listbox :
    SI listbox a un item sélectionné
    récupère dans une variable la valeur de l'item sélectionné,

    Après la mise à jour de la listbox :
    Si la variable is not nothing alors sélectionne l'item contenu dans la variable.

    Pour le code exact, je te laisse chercher un peu (faut pas tout donner, sinon, tu vas t'embéter !)

    Benjamin DEVUYST
    Et comme l'a dit Rick Osborne
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live"
    http://bdevuyst.developpez.com
    http://blog.developpez.com/bdevuyst
    www.bdevuyst.com

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 161
    Points : 193
    Points
    193
    Par défaut
    Voila ce que je fais
    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
     
    private void timer1_Tick(object sender, EventArgs e)
    {
        if (lstAllMeetings.SelectedIndex != -1)
        {
            CMeeting selectedItem = (CMeeting)lstAllMeetings.SelectedItem;
            ArrayList aoAllMeeting = getAllMeetings(); // Ca, C'est La mise a jour ==> me renvoie un ArrayList
            lstAllMeetings.BeginUpdate();
            lstAllMeetings.Items.Clear();
     
            foreach (CMeeting oMeeting in aoAllMeeting)
            {
                lstAllMeetings.Items.Add(oMeeting);
            }
            if(selectedItem != null)
                lstAllMeetings.SelectedItem = selectedItem;
            lstAllMeetings.EndUpdate();
        }
    Cela se déselectionne qd meme...

  4. #4
    Rédacteur
    Avatar de benji_dv
    Homme Profil pro
    Architecte
    Inscrit en
    Juillet 2005
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 375
    Points : 1 276
    Points
    1 276
    Par défaut
    que fait lstAllMeetings.EndUpdate() ?
    Benjamin DEVUYST
    Et comme l'a dit Rick Osborne
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live"
    http://bdevuyst.developpez.com
    http://blog.developpez.com/bdevuyst
    www.bdevuyst.com

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 161
    Points : 193
    Points
    193
    Par défaut
    Le BeginUpdate permet de 'bloquer' la méthode pait du composant
    Je peux donc faire la mise a jour du composant sans que celui ci clignotte avec le timer...
    LE EndUpdate reactive le paint() et redessine le composant modifié !

  6. #6
    Rédacteur
    Avatar de benji_dv
    Homme Profil pro
    Architecte
    Inscrit en
    Juillet 2005
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 375
    Points : 1 276
    Points
    1 276
    Par défaut
    Oui, mais
    tu vides ta liste avant de la mettre à jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lstAllMeetings.Items.Clear();
    Donc jamais il ne trouvera l'élément à sélectionner !
    Car pour lui deux objets qui ont les mêmes caractéristiques mais qui pointent à des endroits différents en mémoire sont des objets différents !

    Dès lors, il me semble que tu vas devoir implémenter la sélection manuelle.
    Pour améliorer les perfs (et éviter de parcourir 2 fois la liste : 1 x en remplissage et 1x en recherche d'une sélection),
    tu peux le faire lors de l'insertion : récupérer l'objet inséré qui correspond à celui qui était sélectionné dans une variable locale,

    après avoir tout inséré, sélectionner cet objet.

    voilou
    Benjamin DEVUYST
    Et comme l'a dit Rick Osborne
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live"
    http://bdevuyst.developpez.com
    http://blog.developpez.com/bdevuyst
    www.bdevuyst.com

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 161
    Points : 193
    Points
    193
    Par défaut
    C bon, ca marche ^^
    Merci, probleme resolu!

    Je ne fais plus le .Clear()
    et dans le foreach, je fais juste un test devant le .add

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(lstAllMeetings.Items.Contains(oMeeting))
          lstAllMeetings.Items.Add(oMeeting);

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/08/2011, 03h24
  2. Réponses: 4
    Dernier message: 14/02/2011, 12h25
  3. [AC-2003] Afficher le contenu d'une listBox sur evenement après mise à jour d'une autre.
    Par moilou2 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 17/07/2009, 11h47
  4. [AC-2000] Problem AddItem sur ListBox dans formulaire
    Par Filippo dans le forum IHM
    Réponses: 2
    Dernier message: 24/04/2009, 15h22
  5. [AJAX] Evenement "Oncomplete" sur Fancyupload2
    Par roadruner dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 01/11/2008, 18h01

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