Please Enable JavaScript!
Gon[ Enable JavaScript ]

반응형

[C#] 리스트컨트롤(ListView)에 드래그앤 드랍으로 파일 추가하기

 

환경 : Visual Studio 2013

 

이번 예제는 파일을 리스트 컨트롤에 끌어서 놓았을 때 파일 제목을 추가하는 방법에 대한 내용입니다. 파일을 추가할 때 파일 다이얼로그를 이용하기도 하지만 폴더를 열어서 끌어나 놓는 것이 더 편리하죠.

 

리스트 컨트롤에 파일을 추가하기 위해서는 속성값을 변경해야 합니다. AllowDrop = true 로 변경합니다. 드래그 앤 드랍을 허용한다는 의미겠죠. 

[C#] 리스트컨트롤(ListView)에 드래그앤 드랍으로 파일 추가하기

 

다음은 드래그 앤 드랍에 쓰이는 이벤트 함수 두개를 만듭니다. DragDrop DragEnter 함수인데 DragDrop 은 리스트 컨트롤에 마우스를 드래그해서 놓았을 때 발생하는 함수이며, DragEnter 은 마우스로 리스트컨트롤 안으로 들어왔을 때 발생하는 함수 입니다.

[C#] 리스트컨트롤(ListView)에 드래그앤 드랍으로 파일 추가하기

 

DragEnter 이벤트 함수는 드래그 앤 드랍이 가능하다는 표시를 하기 위한 것입니다. 이것을 구현하지 않으면 파일이 리스트에 추가 되지 않는 것 처럼 보일 겁니다.

private void listView1_DragEnter(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.Copy;
}

 

DragDrop 이벤트 함수는 리스트에 파일의 제목을 추가하는 내용입니다.

 

private void listView1_DragDrop(object sender, DragEventArgs e)
{

    string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
    foreach (string file in files) listView1.Items.Add(file);
}

 

폴더에 있는 파일을 드래그 해서 넣은 모습입니다. 같은 파일이 있는지 검사하는 기능과 경로, 제목을 분리해서 보여주는 등의 부족한 면은 이제부터 구현 해야 겠죠. 

[C#] 리스트컨트롤(ListView)에 드래그앤 드랍으로 파일 추가하기

반응형
Posted by 녹두장군

댓글을 달아 주세요

  1. afds 2015.12.09 17:49  댓글주소  수정/삭제  댓글쓰기

    이게 마우스를 놓지 않아도 파일이 등록되어버리는데 마우스를 놓았을때 등록하게 하려면 어떻게 해야할까요?

  2. 허무와염세 2018.03.20 16:09  댓글주소  수정/삭제  댓글쓰기

    문의사항이있습니다.

    상기내용대로,

    심플하게...폼하나에 리스트뷰1개올리고, allowdrop=true;로 설정하고,

    이벤트 두개 복사해서, 넣고...실행을 했는데요....

    DRag&Drop으로 파일패스를 리스트업 할려고 하는데....

    마우스포인터가 리스트뷰 위로 이동하면, 모양이 쓰기방지모양(원안에 사선표시)으로 바뀌고,

    이벤트를 타지 않습니다.

    왜그럴까요?

    참고로...폼의 allowdrop 속성도 변경해 봤습니다.

    즉 4가지 경우
    (
    1.Form.AllowDrop=false; listview.AllowDrop=false;

    2.Form.AllowDrop=true; listview.AllowDrop=false;

    3.Form.AllowDrop=false; listview.AllowDrop=true;

    4.Form.AllowDrop=true; listview.AllowDrop=true;
    )

    다, 시도해 봤습니다.

    뭔가...다른 속성이 있나요?