winzip/winrar와 비슷한 기능을 구현하려고합니다. 패키지의 내용 (System.IO.Packaging)을 표시하는 Treeview
이 있습니다. 드래그 앤 드롭 수있는 파일이나 폴더를 탐색기 창이나 바탕 화면 등 TreeView
에서 수 내 문제는 내가 DoDragDrop
호출하기 전에 그 개체가 실제로 떨어졌다 경우도 알고 싶어요. 즉, FileDrop
유형의 DataObject
을 만들려면 패키지의 해당 내용을 임시 영역으로 추출한 다음 DoDragDrop
을 호출하기 전에 DataObject에 해당 경로를 제공해야합니다. 사용자가 유능한 컨테이너에 드롭하지 않거나 드롭을 취소하지 않으면 해당 내용을 추출하는 오버 헤드가 낭비됩니다. WinZip은 드롭이 유효한 타겟에서 발생할 때까지 임시 파일을 실제로 생성하지 않는다는 것을 알았습니다. 나는 WinZip 드롭에 의해 제공되는 DataFormats를 체크했다. 그리고 그들은 정상 FileDrop, FileNameW, FileName 그리고 Shell IDList Array이다. 첫 번째 3 개는 임시 위치에 문자열을 보관하기 만하면 winzip이 해당 파일을 추출합니다. 나는 마지막 하나가 무엇인지 모르겠다.C# 끌어서 놓기 기능
간단히 말해, 드롭 위치가 유효하다는 것을 알기 전까지는 내용을 추출하지 않아도됩니다. 드롭 위치를 알아내는 콜백이 있습니까? 어떤 제안이라도 도움이 될 것입니다.
System.Windows.DragDropEffects de = DragDrop.DoDragDrop(treeview1, dataObj, System.Windows.DragDropEffects.Move);
, 나는 처음에 인정을 또한 포함 FolderTree 일을 시작했지만, 그것은 일시적인 수정 일뿐입니다. 그래도 조언 주셔서 감사합니다. –