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 :

Prise en compte d'événement successif avec WPF


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2008
    Messages : 54
    Par défaut Prise en compte d'événement successif avec WPF
    Bonjour, le problème est le suivant.

    Une TextBox avec l'événement TextChanged.

    Dans mon cas, le traitement T de l'événement E associé à la TextBox, dure assez longtemps.
    Si le texte change x fois, j'ais donc les traitement T1, T2, Tx qui s'accumulent et s'exécutent à la suite.
    J'aimerais que le traitement T ne s'exécute que si j'arête de modifier le texte de ma texte box durant un certain temps (et non pas à chaque modification).

    (le traitement en question est une requête LDAP, la saisie est celle d'un samaccountname, et je souhaiterais que la recherche de l'objet ne se fasse que si j'arrête de saisir mon texte plus de 0,5 secondes par exemple.)

    Visual studio community 2013
    .NET 4.5

    cordialement
    Patrick

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Par défaut
    tu ne pourrais pas chaque fois que ton tu arrives dans ton textchanged, Lancer un timer de 500ms

    Si le timer est deja lancé, tu stoppe le timer en cours
    et tu en relances un nouveau de 500ms

    à la fin du timer tu fais ton action.

  3. #3
    Membre actif
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2008
    Messages : 54
    Par défaut
    Citation Envoyé par ChickenJim Voir le message
    tu ne pourrais pas chaque fois que ton tu arrives dans ton textchanged, Lancer un timer de 500ms

    Si le timer est deja lancé, tu stoppe le timer en cours
    et tu en relances un nouveau de 500ms

    à la fin du timer tu fais ton action.
    c'est une bonne idée, je vais essayer ça.
    (le temps de comprendre comment on crée un timer :-) )

    Merci
    Je ferais un retour

  4. #4
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 93
    Par défaut
    Bonsoir,

    Peux-tu donner des détails sur l'action que tu veux faire préciser, peut-être qu'un autre événement serait plus adéquat à ton problème.

  5. #5
    Membre actif
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2008
    Messages : 54
    Par défaut
    Citation Envoyé par Kangourex Voir le message
    Bonsoir,

    Peux-tu donner des détails sur l'action que tu veux faire préciser, peut-être qu'un autre événement serait plus adéquat à ton problème.
    Oui, il s'agit de verifier les éléments saisis d'un formulaire au fil de l'eau, actuellement chaque modification d'un champ provoque une recherche sur des milliers d'objets, et c'est tres penalisant en cours de frappe.
    Si l'objet existe le champ se color en rouge pour prevenir l'utilisateur.
    Bien sur, je pourrait le faire avec un simple bouton, mais c'est moins interessant.

    Je note qu'il y a 3 timers, le quel choisir selon quel critére, mon code est en WPF ?

    System.Windows.Forms.Timer
    System.Timers.Timer
    System.Threading.Timer

    Mon bouquin sur C# ne propose que la premiére classe mais passe vite sur le sujet.

  6. #6
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 93
    Par défaut
    Alors le mieux à faire c'est quand le texte change, tu émets un laps de temps ou il peut encore changer.

    Par exemple je tape "EAU", Je vais taper "E", "A", "U" donc 3 traitements. Mais si tu émets un laps de temps d'une seconde qu'on puisse la rechanger sans faire de traitement tu pourras taper "EAU" et faire ton traitement après.

    Après tu peux cliquer sur un bouton pour lancer la chose.

    Ou attendre que la souris quitte la textbox (LostFocus).


    Bah déjà :

    - System.Windows.Forms.Timer est un composant winform il déclenche une méthode toutes les X ms, je pense qu'en WPF il est pas intégré ou alors caché la winform (mais ça consomme etc)
    - System.Timers.Timer il fait la même chose mais ne dépend pas d'un winform.
    - System.Threading.Timer je dirai qu'il dépend plus d'un thread à déclecheur de méthode à temps X ms.

    Le Threading.Timer est de plus bas niveau, que les 2 autres. Mais plus on monte en niveau plus y a de contrainte d'utilisation et de condition d'accès.

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

Discussions similaires

  1. prise en compte d'une reduction avec paypal
    Par arckaniann dans le forum Langage
    Réponses: 8
    Dernier message: 17/06/2012, 18h02
  2. Non prise en compte de certaines conditions avec Fonction SI
    Par argaz01 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/06/2010, 08h10
  3. ASDOC : pas de prise en compte des évènements
    Par Lorenzo77 dans le forum EDI/Outils
    Réponses: 0
    Dernier message: 01/03/2009, 00h30
  4. Requête avec prise en compte des jours ouvrés
    Par guenfood dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 25/02/2008, 15h36
  5. probleme prise en compte modification avec tomcat4.1
    Par faroun dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 03/05/2006, 20h41

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