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

Dotnet Discussion :

[WinForms]Comment sont gérés des clics rapides sur un bouton


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Par défaut [WinForms]Comment sont gérés des clics rapides sur un bouton
    Bonjour à tous,

    Imaginons un traitement long appelé lors d'un clic sur un bouton, que se passe-t-il si je clique plusieurs fois sur ce bouton très rapidement :
    • Les évènements clic sont gérés les un après les autres après que chaque traitement pour un clic ait été effectué?
    • Le traitement du premier évènement peut être interrompu pour commencer le traitement du deuxième?
    • Seul le premier clic est géré, les clics suivant n'étant pas "enregistrés" puisque l'application effectuait déjà un traitement?
    • ...


    Merci d'avance à tous ceux qui pourraient m'éclairer,
    Nicolas

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Par défaut
    me semble que :
    Les évènements clic sont gérés les un après les autres après que chaque traitement pour un clic ait été effectué
    Mais la solution c'est le multithreading afin de ne pas attendre la fin de ton traitement.
    Tu créai un thread pour chaque clic sur ce bouton et tu execute ta fonction, ainsi tu n'es pas obligé d'attendre la fin du traitement de l'opération, et les fils d'execution s'effectue de manière concurente. (sauf si bien sûr tu as besoin que le traitement du premier clic soit effectuer pour entamer l'execution du deuxieme comme pour les base de données les calculs et toute utilisation d'une ressource partagée)

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Par défaut
    De ma connaissance du fonctionnement de la gestion des messages de Windows, je dirais aussi qu'il devrait gérer chaque clic l'un après l'autre.

    Par contre je n'ai pas bien compris ta deuxième phrase (je m'étais mal exprimé dans ma question, cela vient surement de là )

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Par défaut
    J'ai édité trouves-tu ça plus compréhensible ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Par défaut
    Oui je comprend mieux

    Mais mon but n'est justement pas de pouvoir exécuter des tâches parallèles mais d'empêcher que l'on ne clique plusieurs fois sur un bouton si on n'y prend pas garde.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Par défaut
    Dans ce cas joujou t'as mis sur la voie:
    Met la propriété enabled de ton bouton a false lors du traitement et un backgroundworker est en général utilisé pour les traitement long (ça evite que ton interface freeze), utilise l'event RunWorkerCompleted pour repasser la valeur enabled de ton bouton a true.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 122
    Par défaut
    Ca n'a peut-etre rien à voir, mais si tu veux empêcher cette possibilité, tu peux Disabler le bouton en début de traitement, et l'Enabler à la fin...

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Par défaut
    Citation Envoyé par joujou_le_fou
    Ca n'a peut-etre rien à voir, mais si tu veux empêcher cette possibilité, tu peux Disabler le bouton en début de traitement, et l'Enabler à la fin...
    C'est justement ce que je fais mais ça ne semble pas fonctionner :s

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 122
    Par défaut
    C'est justement ce que je fais mais ça ne semble pas fonctionner :s
    C'est à dire?

Discussions similaires

  1. Comment afficher correctement des Balloon ToolTip sur des contrôles?
    Par NicolasJolet dans le forum Windows Forms
    Réponses: 22
    Dernier message: 31/12/2021, 14h42
  2. [HTML] "Nested tags", comment sont interpretées des balises imbriquées ?
    Par Sunchaser dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 25/03/2009, 12h12
  3. Comment faire défiler des images comme sur le site suivant
    Par tidus_6_9_2 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/01/2008, 14h32
  4. Réponses: 2
    Dernier message: 26/11/2006, 21h10
  5. [c#] Comment sont gérés les noms de DataTable dans un DataSet ?
    Par Seth77 dans le forum Accès aux données
    Réponses: 4
    Dernier message: 10/09/2006, 19h02

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