문제

OnMouseClick 및 OnMouseDoubleClick을 무시하고 클릭 스타일이 사용되었는지에 따라 다른 작업을 수행하고 싶습니다.

문제는 OnMouseClick이 단일 클릭과 두 번의 클릭으로 발생하고 있으며 OnMousEdouBleclick 전에 호출되고 있다는 것입니다.

나는 이것이 일반적인 요구 사항이어야한다고 확신한다. 그래서 나는 꽤 분명한 것을 놓친 것 같습니다. 누군가 나를 채울 수 있습니까?

추가 할 편집 : mouseeventargs.clicks count는 도움이되지 않습니다. 더블 클릭의 경우, 첫 번째 클릭은 MouseeventArgs.clicks == 1을 사용하여 OnMouseClick에서 한 번의 클릭으로 처리됩니다.

추가 할 편집 : 객체는 이미지 썸네일입니다. 한 번의 클릭은 내보내기를 위해 선택을 켜고 끄야합니다. 두 번 클릭하면 축소판 전체 화면이됩니다. 선택 및 "활성화"동작은 직교입니다. 이것은 두 가지 행동에 근본적인 문제를 나타낼 수 있습니다 ...

건배, 롭

도움이 되었습니까?

해결책

그것은 창에서 발생합니다. 나는 그들이 .NET에서 처리하기 위해 특별한 것을 추가했다고 생각하지 않습니다.

이것을 처리하는 정상적인 수단은입니다

  • a) 선택과 같이 더블 클릭하기 전에 원하는 일을 한 번 클릭하십시오.
  • b) 옵션이 아닌 경우 클릭 이벤트에서 타이머를 시작하십시오. 타이머 진드기에서 단일 클릭 작업을 수행하십시오. 더블 클릭 이벤트가 먼저 발생하면 타이머를 죽이고 이중 클릭 작업을 수행하십시오.

시간을 설정하는 시간은 시스템의 두 번 클릭 시간 (사용자가 제어판에 지정할 수 있음)과 같아야합니다. System.windows.forms.systeminformation.doubleclicktime에서 사용할 수 있습니다. 자세한 내용은 MSDN에 있습니다. 여기

다른 팁

문제는 대부분의 객체가 둘 다 구현하지 않는다는 것입니다. 단일 및 이중 클릭에 대해 합리적으로 다른 동작을 가질 수있는 몇 가지 객체는 일반적으로 두 번 클릭 작업 전에 단일 클릭 액션을 실행하는 데 괜찮습니다 (폴더를 강조하고 폴더를 열고 선택하기 전에 주소 표시 줄에 초점을 입력하는 등). 결정하는 방법은 한 번의 클릭 시간을 기다리고 두 번의 클릭이 감지되면 단일 클릭에 대한 조치를 취소하는 것일 수 있습니다.

또 다른 가능한 해결책은 onmouseDoubleclick 함수를 onMouseClick으로 호출하도록하는 것입니다. OnMouseClick의 동작은 이진 토글이므로 두 번 부르는 동일한 상태로 재설정합니다.

따라서 사용자가 두 번 클릭하면 Windows가 OnMouseClick을 호출 한 다음 OnMousEdouBleClick을 호출합니다. OnMousEdouBleClick은 OnMouseClick (다시)에 전화를 걸어 상태를 복원 한 다음 더블 클릭을 처리합니다.

이것은 해결책으로 불만족 스럽지만 작동합니다.

타이머를 사용하여 (더블 클릭의 첫 클릭을 삼키기 위해) 만족스럽지 않으며 사용자의 더블 클릭 속도 환경 설정을 처리하는 합병증이 추가됩니다.

건배, 롭

OnMouseClick 이벤트 핸들러 내에서 타이머를 시작할 수 있습니다.

  • 타이머가 꺼지면 (예 : 300ms) 단일 클릭이 의도됩니다.

또 다른

  • Time Times Out 이전에 다른 OnMouseClick 이벤트가 생성 된 경우 클릭의 X & Y 위치를 검사하고 첫 번째 클릭의 특정 반경 내에있는 경우 Double Click 기능을 동작하십시오.

그렇지 않으면

  • 두 번째 클릭의 첫 번째 클릭 및 재개를 다시 시작하십시오

NB :이 구현은 TimeOput 및 'Double-Click'반경을 모두 시스템 구성과 독립적으로 구성하여 S/W를 여러 시스템으로 가져올 수 있다는 사실의 이점이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top