2009-03-26 3 views
2

Я хочу реализовать пользовательскую полосу прокрутки, но хочу, чтобы она работала как стандартная. Поэтому мне нужно обнаружить, что кнопка мыши удерживается над стрелкой вверх или вниз на концах панели, чтобы пользователь мог прокручивать ее с помощью контуров баров.Как я могу обнаружить кнопку мыши, удерживаемую над элементом управления winforms?

Как определить, что кнопка удерживается?

MouseDown только срабатывает один раз при нажатии кнопки. MouseUp будет срабатывать, когда кнопка будет выпущена, но есть ли лучший способ, чем иметь какой-то таймер, который периодически запускается между MouseDown и MouseUp?

ответ

2

Я не думаю, что вы сможете сделать лучше, чем с помощью Timer (хотя я могу быть удивлен).

Я использовал Timer s прежде, чем для той же цели, и они работают, как правило, так:

  • The TimerStart() с, используя Interval из ~ 200 мс, если кнопка идет вниз. Мышь также Capture d на данный момент.
  • Каждый Tick воздействует на свиток. (Первый Tick также изменяет интервал до ~ 25 мс)
  • Когда мышь подходит, Timer.Stop() s.

Изменение в Interval от 200 к 25 означает, что они должны держать мышь вниз на некоторое время, но как только они делают, прокрутка действие происходит более быстро/гладко.

Кнопка, «удерживаемая», на самом деле не является событием, это скорее состояние (т. Е. Оно не происходит в определенный момент времени).

 Смежные вопросы

  • Нет связанных вопросов^_^