Как реализовать акселератор нажатия кнопки? - Visual Basic .NET

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

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

Всем здравствуйте. При нажатии и удержании одной из кнопок со стрелками элемента управления NumericUpDown скорость смены значений в окне увеличивается. То же происходит и при работе с клавиатурой: если нажать и держать клавишу нажатой, то через какое-то время частота "нажатий" возрастает. Пусть есть кнопка на форме, при клике на которой происходит какое-то отображаемое на форме событие. Пользователь нажал кнопку мышкой и не отпускает. Событие должно повторятся сначала раз в секунду, а если он её не отпустит ещё пару секунд, то частота повторения событий должна увеличится втрое. На VB-6 это выглядело так:
Листинг программы
  1. Private Sub imgYearForward_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  2. flgYearForwardBtn = True 'TRUE = нажата кнопка "год вперёд"
  3. startscroll:
  4. If Button = 2 Then 'нажата правая кнопка мыши?
  5. pause_time = PAUSE_RBUTTON
  6. Else
  7. pause_time = PAUSE_LBUTTON
  8. End If
  9. intNumYear = intNumYear + 1
  10. If intNumYear > 9999 Then intNumYear = 9999
  11. lblYear = intNumYear
  12. 'задержка
  13. Pause pause_time
  14. 'проверка, не отжата ли кнопка
  15. If flgYearForwardBtn = False Then Exit Sub
  16. 'зацикливание
  17. GoTo startscroll
  18. End Sub
  19. Private Sub imgYearForward_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
  20. flgYearForwardBtn = False 'TRUE = нажата кнопка "год вперёд"
  21. intNumYear = intNumYear - 1
  22. '-----------------------------------------------------------------------------------------------------
  23. Call SetDate(DateAdd("yyyy", 1, DateSerial(intNumYear, intNumMonth, intNumDay)))
  24. '-----------------------------------------------------------------------------------------------------
  25. End Sub
правда для изменения скорости повторов использовались разные кнопки мыши, к тому же использовался не приветствуемый переход GO TO. Может в NET есть нечто готовое, я имею в виду "акселерацию" повторов при удержании кнопки нажатой?

Решение задачи: «Как реализовать акселератор нажатия кнопки?»

textual
Листинг программы
  1. MsgBox(Threading.Thread.CurrentThread.ManagedThreadId)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

13   голосов , оценка 3.769 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут