태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.


2008/01/28 15:30

WinForm에서 Drag and Drop 구현

WinForm에서 Drag and Drop 구현

 

탐색기에서 텍스트 파일을 FormDrag&Drop하면 해당 텍스트 파일의 내용을 출력하는 예제를 작성해 봅니다.

 

FormOnDragEnter(), OnDragDrop() 이벤트 핸들러를 오버라이드하여 구현합니다.


 

0.     Form AllowDrop 속성을 True로 설정해야 합니다.

this.AllowDrop = true;

 

1.     Drag Effect 출력 - OnDragEnter()

// 드래그 효과 출력

protected override void OnDragEnter(DragEventArgs drgevent)

{

    // 파일이 드래그 될 경우에만 Copy 효과

    if(drgevent.Data.GetDataPresent(DataFormats.FileDrop))

    {

        drgevent.Effect = DragDropEffects.Copy;

    }

    else

    {

        drgevent.Effect = DragDropEffects.None;

    }

 

 

    base.OnDragEnter(drgevent);

}

 

탐색기에서 드래그한 파일이 폼 위에서 드래그될 때 마우스 커서를 복사 아이콘으로 변경합니다.

 

2.     Drop 파일 처리 – OnDragDrop()

// 파일 || 텍스트 드랍 처리(워드 카운트)

protected override void OnDragDrop(DragEventArgs drgevent)

{

if(drgevent.Data.GetDataPresent(DataFormats.FileDrop))

    {

        string[] fileNames;

        fileNames = (string[])drgevent.Data.GetData(DataFormats.FileDrop);

       

    }

 

    base.OnDragDrop(drgevent);

}

 

폼 위에서 드랍(마우스 버튼을 뗄 때)하면 DragEventArgs 매개변수 drgevent Data객체에서 FileDrop 포맷에 맞는 데이터를 가져옵니다.

FileDrop 포맷의 경우 파일명 배열을 반환합니다.

 

3.     Drag 시작 – OnMouseDown(), DoDragDrop()

// 드래그 시작

void override OnMouseDown(object sender, MouseEventArgs e)

{

   

control.DoDragDrop(dragObject,DragDropEffects.Copy);

}

 

ListView ListBox등의 아이템을 드래그할 경우 해당 컨트롤의 MouseDown() 이벤트 핸들러에서 DoDragDrop() 메서드에 드래그할 데이터와 드래그효과를 설정하여 구현할 수 있습니다.

 

드래그할 데이터의 포맷에 따라 OnDragEnter(), OnDragDrop() 이벤트 핸들러의 GetDataPresent() GetData() 메서드의 DataFormats를 적절히 변경해야 합니다.

 

Trackback 0 Comment 1