Domanda

Voglio realizzare una barra di scorrimento personalizzato, ma voglio che funziona come quello standard. Così ho bisogno di rilevare che il pulsante del mouse viene tenuto premuto né sulla freccia su o giù alle estremità della barra in modo che l'utente può scorrere utilizzando finisce al bar.

Come posso rilevare che il pulsante si svolge?

MouseDown spara solo una volta quando il tasto viene premuto prima. MouseUp viene emesso quando il pulsante viene rilasciato, ma c'è un modo migliore di avere una sorta di timer che innesca periodicamente tra il MouseDown e MouseUp?

È stato utile?

Soluzione

Non credo che si sta andando ad essere in grado di fare meglio che usare un Timer (anche se può essere sorpresi).

Ho usato Timers prima per lo stesso scopo, e funzionano, di solito in questo modo:

  • I Timers Start(), usando un Interval di ~ 200ms quando il pulsante va giù. Il mouse è inoltre Captured a questo punto.
  • Ogni effetti Tick una pergamena. (Il primo Tick cambia anche l'intervallo di ~ 25ms)
  • Quando il mouse viene in su, i Timer.Stop()s.

Il cambio della Interval da 200 a 25 significa che essi hanno per tenere il mouse verso il basso per un po ', ma una volta che lo fanno, l'azione di scorrimento avviene in modo più rapido / senza intoppi.

Il tasto essere "tenuta" in realtà non è un evento, è più di uno stato (cioè esso non si verifica in un punto specifico nel tempo).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top