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.
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.
Qu'as tu déjà essayé ?
Quel est le problème que tu rencontres ?
Que souhaites tu faire exactement ?
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.
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)
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.
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)
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.
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?
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)
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 )?
Bonjour,
Mieux vaudrait utiliser un BackgroundWorker.
Mais, on peut "bidouiller" en testant l'appui sur une touche clavier ainsi :
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
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
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
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é.
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 ?envoyer mon message grâce à ma fonction tant que le bouton est enfoncé.
" Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson
En faite je doit envoyer une trame (ex: "0 -1 0 0 0") tout en vérifiant que mon bouton Envoyer est appuyer.
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
pourrais-tu me donner un exemple simple et concret s'il te plait parce que là je suis complètement perdu merci d'avance
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager