2

カスタムスクロールバーを実装したいのですが、標準のスクロールバーのように動作させたいです。したがって、ユーザーがバーの端を使用してスクロールできるように、マウス ボタンがバーの端にある上矢印または下矢印のいずれかの上にあることを検出する必要があります。

ボタンが押されていることを検出するにはどうすればよいですか?

MouseDown は、ボタンが最初に押されたときに 1 回だけ発生します。ボタンが離されると、MouseUp が起動しますが、MouseDown と MouseUp の間で定期的にトリガーする何らかのタイマーを使用するよりも良い方法はありますか?

4

1 に答える 1

2

a を使用するよりもうまくできるとは思いませんTimer(驚くかもしれませんが)。

Timer以前に s を同じ目的で使用したことがありますが、通常は次のように機能します。

  • ボタンが押されたときに ~ msのTimer Start()s を使用します。この時点でマウスもd になります。Interval200Capture
  • それぞれTickがスクロールに影響します。(最初Tickも間隔を ~ 25ms に変更します)
  • マウスが現れると、Timer.Stop()s.

Intervalから200への変更は25、マウスをしばらく押し続ける必要があることを意味しますが、一度押すと、スクロール アクションがより迅速/スムーズに行われます。

ボタンが「保持」されていることは実際にはイベントではなく、むしろ状態です (つまり、特定の時点で発生するわけではありません)。

于 2009-03-26T15:56:35.497 に答える