Détecter click "long" bouton [Résolu]

Signaler
Messages postés
5
Date d'inscription
lundi 20 octobre 2008
Statut
Membre
Dernière intervention
20 juin 2009
-
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
-
Bonjour à tous,

J'ai deux boutons de chaque côté d'une progressbar continue, l'un pour incrémenter et l'autre pour décrémenter cette derniere (bouton + et -).
J'aimerais détecter un click long sur ces 2 boutons pour modifier la valeur de la progressbar à la manière d'un NumericUpDown, en augmentant progressivement la vitesse de défilement, car le pas est assez fin et le range grand. Le fait de cliquer à chaque fois pour incrémenter la progressbar demande beaucoup de temps surtout lorsqu'on doit aller loin.

Il y a certainement une combine avec les évenements MouseDown, MouseEnter, Click mais je n'arrive pas à la trouver.
Je pensais pouvoir récupérer les méthodes du composant NumericUpDown, mais je ne sais pas si on peut accéder au code du composant et si oui, comment faire.

Si qqun à un filon...Merci. 

1 réponse

Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
30
Bonjour,

une solution consiste à armer un timer dans le mouse down et à le désarmer dans le mouse up
dans l'evenement du timer tu incremente un compteur (ou autre action)

essaye ça:
un bouton button3, un label label1 sur un form Form1

Timer timer=new Timer();
int count=0;

private void Form1_Load(object sender, System.EventArgs e)
{
timer.Enabled=false;
timer.Interval=10;
timer.Tick+=new EventHandler(timer_Tick);
}

private void button3_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
count=0;
timer.Start();
}
private void button3_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
timer.Stop();
}
private void timer_Tick(object sender, EventArgs e)
{
count++;
label1.Text=count.ToString();
}

C# is amazing, enjoy it!