2012-04-16 3 views
1

캡처 된 마우스를 놓는 데 문제가 있습니다. 내 응용 프로그램에서는 일련의 동작을 요구합니다 (즉, 자동으로 차례로 실행됨을 의미합니다). 시퀀스는 다음과 같습니다 : _ 개체 선택 _ 입력 된 값에 따라 개체가 회전하도록 메시지 상자에 값을 입력하십시오.메시지 상자가 차단되었습니다. mouseLeftButtonUp 이벤트

런타임에 : 객체를 클릭하면 선택한 객체의 MouseLeftButtonDown 이벤트가 활성화됩니다. 그런 다음 메시지 상자가 나타납니다. 이 메시지 상자는 마우스를 차단하여 해당 객체의 MouseLeftButtonUp 이벤트를 활성화합니다. 그래서 한 번 더 객체를 클릭하여 MouseLeftButtonUp 이벤트를 활성화해야합니다. 그렇지 않으면 응용 프로그램을 계속 실행할 수 없습니다.

아무도 도와 줄 수 있습니까?

+0

일부 코드를 표시하십시오. – Likurg

답변

2

많은 컨트롤이 MouseUp 이벤트에서만 조치를 취하는 이유입니다. MouseDown 이벤트를 사용하여 상태 또는 선택을 나타내는 것과 같은 작업을 수행합니다. 마우스 캡처 (Winforms의 캡처 속성)를 사용하여 마우스가 창 밖으로 이동 한 경우에도 MouseUp 이벤트를 가져올 수 있습니다. 브라우저에서 바로 시도해보고 마우스 오른쪽 버튼을 누른 채로 있으면 아무 일도 일어나지 않습니다. 링크 나 단추를 왼쪽으로 클릭 할 때와 똑같은 동작입니다.

당신이 원했던 것처럼 소리가납니다.

+0

Hans Passant에 감사드립니다.하지만 앱을 사용하면 개체를 드래그 앤 드롭 할 수 있습니다. 그래서 드래그 드롭 기능에 대해 모든 마우스를 아래로 움직이고 마우스를 움직이고 마우스를 사용하고있는 이유입니다. 필자의 경우 시퀀스는 포인트를 선택하고 상자에 값을 입력하는 것을 의미합니다. select는 마우스 이벤트를 활성화하지 않지만 드래그 드롭 기능에서 마우스를 아래로 활성화합니다. 그래서 상자가 나타나면 마우스 업 이벤트를 차단합니다. 그래서 마우스를 놓기 위해 객체를 다시 클릭하기 전까지 객체는 움직이는 상태에 있습니다. – user1331344

+0

글쎄, 물론 작동하지 않을 수 있습니다. 마우스 왼쪽 버튼을 아래로 움직일 때까지 D + D를 지연 시키면됩니다. 예제 코드는 다음과 같습니다. http://stackoverflow.com/a/3124382/17034 –

+0

좋습니다. 매우 도움이됩니다. 대단히 감사합니다! 예제에 따라 코드를 수정합니다. D – user1331344

관련 문제