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 :

Ecouter et temporiser un clic de souris


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 37
    Par défaut Ecouter et temporiser un clic de souris
    Bonjour à tous et à toutes.

    Ma question va paraître tordue, mais c'est une demande officielle de mes utilisateurs, et franchement, j'ai du mal à voir comment m'y prendre.

    En gros:
    1) Situation
    J'ai une application Windows c# qui, au lieu d'avoir des boutons, utilise des zones de clic avec des listeners pour activer des méthodes. L'idée était de rendre le tout "esthétique".
    2) De ce fait, on a de jolies zones à clics, mais qui posent problème au double clic (vu qu'il arrive d'une zone s'active et se désactive alors trop vite, ceci posant des problèmes de fonctionnement)
    3) L'idée est qu'on veut "temporiser" entre deux clics, à savoir le cycle suivant
    - Clic de la souris: on exécute le changement
    - On temporise de sorte à ne pas tenir compte du clic suivant pendant une durée déterminée (peu importe combien)
    - Ensuite, on autorise à nouveau le clic.

    Mes soucis:
    1) Puisqu'il y a de nombreux écouteurs qui se génèrent automatiquement (par affectation aux zones), je ne me vois pas déglinguer toute la mécanique existante
    2) Il faut que cette tempo soit "postérieure" à l'exécution, puisqu'il faut que le "premier" clic soit effectif, et que le second ne soit bloqué que dans l'intervalle.

    Avez-vous une idée? Sur le principe, je me suis dit plusieurs hypothèses, mais j'aimerais votre avis:
    1) Mettre en place un timer commun qu'on observe: s'il est "actif", le clic n'est pas accepté, sinon il est pris en compte.
    2) Je suppose qu'il faudrait être au niveau supérieur, de sorte à ce que tous les clics souris soient pris en compte.

    Avez vous une idée sur comment m'y prendre?

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Ben le plus simple c'est :

    CP => Souris => Boutons => Vitesse du double-click.(c'est une option récente, elle n'existe que depuis 25 ans environ )

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 37
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Ben le plus simple c'est :

    CP => Souris => Boutons => Vitesse du double-click.(c'est une option récente, elle n'existe que depuis 25 ans environ )
    Hélas non... ils veulent pouvoir paramétrer, du genre "pendant deux secondes, plus de clic possible sur les boutons"... sinon oué j'aurais fait jouer du paramètre

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Est-ce que cette temporisation doit être commune à tous les boutons, ou gérée séparément pour chaque bouton ? Dans le premier cas c'est pas trop galère... comme tu disais, un timer devrait faire l'affaire. Par contre, je ne comprends pas très bien ce qui te bloque ; il faudrait que tu nous en dises plus pour qu'on puisse t'aider

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 37
    Par défaut
    Boarf j'ai finalement trouvé une façon de faire

    1) c'est une partie des boutons, et coup de bol ils sont menés par un thread...
    - donc je crée un timer à l'instanciation du thread
    - Je le Start() suite au sur un des boutons
    - lorsque le second click arrive, je teste si le Timer est toujours enabled
    - Si non, alors j'autorise le clic
    - Si oui, alors je passe mon chemin!

    Je mettrai le code un peu plus tard (ouéé suis plus au bureau).

    ça n'est pas si sorcier que ça, mais juste pénible pour ne pas provoquer de cochonneries dans le code.

    PS: j'ai un doute... mais comment on active/désactive un sablier sur le curseur? (oué je sais question de débutant...)

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par magellan94 Voir le message
    PS: j'ai un doute... mais comment on active/désactive un sablier sur le curseur? (oué je sais question de débutant...)
    Cursor.Current
    (en supposant que ce soit une appli WinForms)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cursor.Current = Cursors.WaitCursor; // sablier
    Cursor.Current = Cursors.Default; // curseur par défaut

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

Discussions similaires

  1. [Debutant] Menu sur clic de souris
    Par chabannou dans le forum Windows
    Réponses: 8
    Dernier message: 02/04/2005, 01h52
  2. Réponses: 8
    Dernier message: 14/03/2005, 21h43
  3. Emuler et detecter un clic de souris (G, D, mollette)
    Par méphistopheles dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/02/2005, 17h25
  4. Réponses: 2
    Dernier message: 12/07/2004, 11h43
  5. Selection par clic de souris
    Par bilbonec dans le forum OpenGL
    Réponses: 7
    Dernier message: 16/04/2004, 00h25

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