2009-02-02 2 views
4

드래그 작업이 성공했는지 여부를 감지 할 수있는 방법이 없지만 몇 가지 방법이 있어야합니다. 소스에서 대상으로 "이동"을 수행한다고 가정합니다. 드롭 다운을 허용 할 수없는 일부 앱이나 컨트롤에서 마우스를 놓으면 어떻게 알 수 있습니까?끌어서 놓기 작업이 실패했는지 어떻게 알 수 있습니까?

그렇다면 드래그가 완료된 시점을 어떻게 알 수 있습니까?

나는 this question을 보았다, 그러나 그의 해결책은 나를 위해 작동하지 않으며, e.Action 항상 Continue 입니다.

답변

6

도움이 될지 모르겠지만 DoDragDrop 메서드는 최종 DragDropEffects 값을 반환합니다.

var ret = DoDragDrop(...); 
if(ret == DragDropEffects.None) //not successfull 
else // etc. 
3

아, 생각났습니다. DoDragDrop에 대한 호출이 실제로는 동기 (절름발이)이며, 작동이 실패한 경우 의 값을 None으로 반환합니다. 그래서 기본적으로 이것은 앱 (또는 적어도 UI 스레드)이 사용자가 드래그 중에있는 한 고정되어 있음을 의미합니다. 그건 나에게 매우 우아한 해결책이 아닌 것 같습니다.

좋아요. cz_dl 방금 그 내용을 게시 했으므로 답을 알려 드리겠습니다.

나는 이것을 이해하지 못합니다. 어떻게 목적지가 동작을 복사할지 아니면 복사 할지를 결정할 수 있습니까? 그게 소스 애플 리케이션까지해야하지 않아?

0

덧글을 추가 할 수 없으므로 다른 답변을 추가하십시오. DoDragDrop이 동 기적으로 호출되고 UI가 동결되지 않는 것을 처음 보았을 때 나는 놀랐습니다.

하지만 내가 믿는 복사/이동 물건은 완벽하게 논리적입니다. 소스 앱에서 DoDragDrop 메서드를 호출하는 동안 허용되는 효과를 지정할 수 있으며 이것이 모두 당신에게 중요한 것입니다. 대상 응용 프로그램이 처리하는 데이터의 처리 방법