2009-11-20 4 views
1

내가 개발중인 응용 프로그램은 C#으로 작성된 Windows 양식 응용 프로그램입니다. 그것에 나무보기가 있습니다. 각 treeNode는 일부 데이터를 저장합니다. 내가하고 싶은 것은 두 개의 응용 프로그램 복사본을 열고 하나의 응용 프로그램에서 일부 treenode를 드래그하여 다른 응용 프로그램으로 드롭하는 것입니다. treenodes가 저장하는 데이터는 다른 응용 프로그램으로 전송되어 다른 응용 프로그램에 treenode를 작성해야합니다. 이 같은 드래그 앤 드롭 기능을 구현하는 방법을 궁금해? 당신의 도움을 주셔서 감사합니다.다른 프로세스간에 드래그 앤 드롭을 구현하는 방법은 무엇입니까?

+0

나는 비슷한 해결책을 세 번째로 연구 중이다. 파티 트리보기. 실행중인 응용 프로그램의 다른 인스턴스에서 정확히 동일한 유형의 컨트롤에 놓는 순간 : "프록시"가 있습니다. 프록시를 "참조 해제"하고 해당 데이터를 Dropped on 컨트롤로 가져 오는 API가 아닌 방법을 찾고 싶습니다. 나는 해결책이 있다고 생각했지만, (나에 의해, 어쨌든) 구현할 수 없다는 것이 밝혀졌다. Groo가 내가 제기 한 질문에 대한 답변에서 "뭔가를 얻을 수 있습니다"http://stackoverflow.com/questions/1699504/c-detect-desktop-folder-mouse-up-during-a-drag-operation best, – BillW

+0

실제로, 트리 노드를 드래그 할 때 기본 객체를 설정해야합니다. treenode를 삭제할 때 기본 데이터를 추출하여 새 treenode를 작성해야합니다. – telescope

답변

1

당신의 타입을 [Serializable]로 표시하고 커스텀 직렬화를 구현하면 작동한다고 생각합니다. 그렇지 않으면 직접 MemoryStream에 직렬화 한 다음 임의의 사용자 정의 데이터 형식을 사용하여 해당 MemoryStream을 데이터 객체에 추가 할 수 있습니다.

+0

더 자세히 설명해 주시겠습니까? 드래그 할 때 메모리 스트림에서 직렬화하면 다른 프로세스에서 삭제 될 때 메모리 스트림에서 데이터를 가져올 수 있습니까? – telescope

+1

예, DoDragDrop을 호출하기 전에 원본 데이터 개체에 추가하십시오. 대상의 DragEnter/DragOver/DragDrop 이벤트에서이 데이터를 다시 저장하십시오. 데이터를 추가 할 때 사용한 것과 동일한 데이터 형식을 지정해야합니다. – logicnp

관련 문제