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 :

[C#] While (boutton.IsPressed )?


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 10
    Points : 5
    Points
    5
    Par défaut [C#] While (boutton.IsPressed )?
    Bonjour,

    je souhaiterais réaliser une boucle while avec un bouton qui enverra une variable tant que mon bouton serra pressé.

    Merci pour vos réponse.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 206
    Points : 196
    Points
    196
    Par défaut
    Qu'as tu déjà essayé ?

    Quel est le problème que tu rencontres ?

    Que souhaites tu faire exactement ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Je cherche à créer un bouton qui envoie une fonction en boucle et à partir du moment ou je relâche le bouton la fonction s'arrête.

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    salut,
    tu peux trouver ce genre de bouton sur le net ou bien le coder toi même en t'abonnant à l'évent OnMouseDown d'un bouton et l'event OnMouseUp de ce même bouton...

    Et sur le MouseDown, tu peux lancer un timer qui a intervalle défini par toi-même appeler la fonction que tu veux appeler de façon récurrente.

    Il suffit sur le OnMouseUp d'arrêter le timer...

    Donc, en gros, 3 lignes de code et s'est plié
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  5. #5
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    Sauf erreur de ma part, les onMouseUp et onMouseDown sont des évènements clients.
    Si ensuite tu veux appeler une fonction coté code-behind, il te faudra passer par Ajax
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    qui a parlé Web ?

    Ma proposition est pour du winform... maintenant, si le truc, c'est pour faire du Web, il faut préciser le contexte d'utilisation
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  7. #7
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    Arf oui j'étais parti direct sur du web sans me poser la question.
    Attendons donc de connaitre le contexte exact
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Mon programme s'applique sur des winforms et non du web.

    Peut-tu m'en dire plus sur les OnMouseDown et OnMouseUp s'il te plait?

  9. #9
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    regardes la doc

    OnMouseDown et OnMouseUp sont deux evenements levés lorsqu'un appui sur ton bouton se produit (appui ou laché du bouton).
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  10. #10
    Membre éclairé Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Points : 735
    Points
    735
    Par défaut
    Déjà avant que tu te lance dans une bidouille avec des timers, que veux tu faire? iqu'est ce qu'il y a dans ta boucle While (boutton.IsPressed )?

  11. #11
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Mieux vaudrait utiliser un BackgroundWorker.

    Mais, on peut "bidouiller" en testant l'appui sur une touche clavier ainsi :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    internal class StopProcClass   
    {
        private static bool        KeyPressed      ;
        private Control            ControlToRefresh ;                                    
        internal static void StopProc_Start(Control vControlToRefresh) 
        {
            ControlToRefresh=vControlToRefresh ;         
            KeyPressed=false ;
            Enabled=true ;
            ControlToRefresh.Refresh() ;
            SxWFTools.DoEvents();
        }
     
        internal static bool StopProc_StopRequired() 
        {
          bool Result = false;
          try // in case of closing appli while a process using "StopProc" is in progress
          {
            if (KeyPressed)
              Result=MessageBox.Show("Stop process ?",StopTitle.Text,MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes ;
            KeyPressed=false ;
          }
          catch {} ;
          return Result ;
        }
        internal static void StopProc_Start(Control vControlToRefresh) 
        {
          Enabled=false ;
        }
        private static Stack CursorsStack = new Stack();
        internal static void PushCursor(Cursor newcursor)
        {
          CursorsStack.Push(Cursor.Current);    
          Cursor.Current = newcursor;
        }
        internal static bool PopCursor()
        {
          bool result = CursorsStack.Count>0;
          if (result) Cursor.Current = (Cursor)CursorsStack.Pop();
          return result;
        }
         internal static void DoEvents()
        {
          PushCursor(Cursor.Current);
          Application.DoEvents();
          PopCursor();
        }
     
    }
    protected override void WndProc( ref Message m )
    {
      base.WndProc() ;
      if (StopProcClass.Enabled) KeyPressed = KeyPressed || m.Msg==135 ; // WM_KEYxxx = 135,260,261,262
    Comme on ne peut pas traiter le click sur un bouton avant la fin d'exécution du traitement, on peut éventuellement tester si le pointer souris est au dessus d'une PictureBox "Stop" à afficher avant le Start en testant en même temps que la variable keyPressed la position de la souris :
    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
     
    if (Enabled && SxWFTools.GetParentForm(StopImage)==Form.ActiveForm) try // in case of closing appli while a process using "StopProc" is in progress
    Point mp = System.Windows.Forms.Control.MousePosition;
    Rectangle r = new Rectangle(StopImage.PointToScreen(new Point(0, 0)).X, StopImage.PointToScreen(new Point(0, 0)).Y, StopImage.Width, StopImage.Height);
    if (KeyPressed || (mp.X > r.Left && mp.X < r.Right && mp.Y > r.Top && mp.Y < r.Bottom))
     ...
     
        internal static Form GetParentForm(Control control)
        {
          Form result;
          if (control is Form) result = (Form)control;
          else if ((Object)control.Parent!=null) result = GetParentForm(control.Parent);
          else result = null;
          return result;
        }
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    En faite dans ma boucle while je voudrait mettre une fonction qui envoie un message via des Sockets avec le protocole UDP (que j'ai déjà !!!), mais il me manque juste la boucle qui me permettrais d'envoyer mon message grâce à ma fonction tans que le bouton est enfoncé.

  13. #13
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    envoyer mon message grâce à ma fonction tant que le bouton est enfoncé.
    Est-ce que ton intention est de tout envoyer ou de découper le message et de l'envoyer par petits morceaux en testant avant l'envoi du prochain morceau si la touche est encore enfoncée ?
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    En faite je doit envoyer une trame (ex: "0 -1 0 0 0") tout en vérifiant que mon bouton Envoyer est appuyer.

  15. #15
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    On peut gérer les event MouseDown/MouseUp du bouton pour activer/désactiver un Timer et, sur l'event Tick du Timer, envoyer la trame.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    pourrais-tu me donner un exemple simple et concret s'il te plait parce que là je suis complètement perdu merci d'avance

Discussions similaires

  1. [débutant]Documentation? boucle "while"? Session?
    Par o151181 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 19/01/2004, 15h20
  2. [FLASH MX] Prob de compréhension des bouttons
    Par WriteLN dans le forum Flash
    Réponses: 13
    Dernier message: 16/10/2003, 17h01
  3. Savoir sur quel boutton on a cliqué ...
    Par Fofone dans le forum Composants VCL
    Réponses: 8
    Dernier message: 10/03/2003, 16h12
  4. Réponses: 3
    Dernier message: 25/11/2002, 14h15
  5. bouttons à répétition
    Par shumy dans le forum C++Builder
    Réponses: 3
    Dernier message: 26/10/2002, 18h16

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