2009-03-26 2 views
2

커스텀 스크롤바를 구현하고 싶지만 표준 스크롤버처럼 작동시키고 싶습니다. 그래서 나는 바 끝을 사용하여 사용자가 스크롤 할 수 있도록 마우스 버튼이 바 끝의 위 또는 아래 화살표 위로 눌려 졌음을 감지해야합니다.winforms 컨트롤에서 마우스 단추를 누르고 있으면 어떻게 감지합니까?

버튼이 감지되고 있는지 어떻게 알 수 있습니까?

MouseDown은 버튼을 처음 눌렀을 때 한 번만 발생합니다. MouseUp은 버튼을 놓을 때 발생하지만 MouseDown과 MouseUp 사이에서 주기적으로 트리거되는 일종의 타이머를 가지는 것보다 더 좋은 방법이 있습니까?

답변

2

나는 놀랍지 만 Timer을 사용하는 것보다 더 잘 할 수있을 것이라고 생각하지 않습니다.

은 나도 같은 목적을 위해 Timer의 이전에 사용했습니다, 그리고 그들은 일반적으로 다음과 같이 작동 :

  • TimerStart()들, 버튼이 다운 될 때 Interval ~ 200 MS의 사용. 마우스는이 시점에서 Capture d입니다.
  • Tick은 스크롤을 적용합니다. 첫 번째 Tick도 간격을 ~ 25 ms로 변경합니다.
  • 마우스가 올라 오면 Timer.Stop()입니다.

25-200에서 Interval의 변화는 잠시 동안 아래로 마우스를 유지해야하지만, 그들이 일단 스크롤 동작이 원활 더 빨리/발생하는 것을 의미한다.

"보유 중"인 버튼은 실제로 이벤트가 아니며 더 많은 상태입니다 (즉, 특정 시점에 발생하지 않음).

관련 문제