Подсчет количества делений при прокрутке колеса мыши - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Событие MouseWheel происходит при прокрутке на очередное деление (зубец) колесика мыши, хотя Студия подсказывает, что e.Delta это "число со знаком, указывающее количество делений, на которое повернулось колесико мыши". Реально же после каждого зубца прокрутки e.Delta равно -120 или +120. Проблема в том, что если колесико крутанули на десять зубцов без остановки, я не хочу обрабатывать каждый зубец, т.к. это затормозит приложение. Возможно, можно как-то просто и изящно получить одно событие прокрутки сразу на 10 щелчков и его то и обработать. Что-то больно не хочется городить таймеры всякие!

Решение задачи: «Подсчет количества делений при прокрутке колеса мыши»

textual
Листинг программы
    Private WithEvents t As New Timer
    Private delta As Integer = 0
...
' Событие MouseWheel
        t.Stop()
        delta += e.Delta
        t.Interval = 300 ' интевал между зубцами))
        t.Start()
...
    Private Sub t_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles t.Tick
        t.Stop()
        ' код обработки всех "зубцов"
        delta = 0
    End Sub

Оцени полезность:

10   голосов , оценка 3.6 из 5
Похожие ответы