본 문서에서는 Visual C# .NET 응용 프로그램에 끌어서 놓기 기능을 제공하는 방법을 단계별로 설명합니다. 파일 끌어서 놓기 작업의 대상으로는 ListBox 컨트롤을 사용합니다.
ListBox 컨트롤은 처리해야 하는 두 가지의 끌어서 놓기 이벤트(DragEnter 및 DragDrop)를 제공합니다. DragEnter
이벤트는 컨트롤의 범위 내로 개체를 끌 때 발생하며 끌고 있는 개체가 컨트롤에 놓으려는 개체인지 여부를 확인하는 데 사용합니다.
이 이벤트는 파일을 컨트롤로 끄는 경우에 처리하게 됩니다. 이 이벤트는 끌고 있는 개체에 따라 컨트롤로 개체를 끌 때 해당
아이콘이 표시되도록 합니다. DragDrop 이벤트는 끌고 있는 개체를 컨트롤에 놓았을 때 발생합니다. 이 이벤트는 개체를 검색할 때 처리하게 됩니다. 데이터를 검색할 때는 Data 개체가 사용됩니다.
Data 개체의 GetData 메서드는 ListBox 컨트롤로 끈 파일의 전체 경로 이름을 포함하는 문자열 배열을 반환합니다. 이 파일 경로 정보를 사용하여 파일에 필요한 작업을 수행할 수 있습니다. 예를 들어, System.IO 네임스페이스의 클래스를 사용하여 파일을 열고 읽으며, 파일을 이동하거나 새 위치로 복사할 수 있습니다. 이 예제에서는 ListBox 컨트롤로 끈 파일에 대한 전체 경로만 추가합니다.
Visual C# .NET 응용 프로그램에 파일 끌어서 놓기 기능을 제공하려면 다음과 같이 하십시오.
private void listBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
if(e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.All;
else
e.Effect = DragDropEffects.None;
}
private void listBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
string[] s = (string[]) e.Data.GetData(DataFormats.FileDrop, false);
int i;
for(i = 0; i < s.Length; i++)
listBox1.Items.Add(s[i]);
}
this.listBox1.DragDrop += new
System.Windows.Forms.DragEventHandler(this.listBox1_DragDrop);
this.listBox1.DragEnter += new
System.Windows.Forms.DragEventHandler(this.listBox1_DragEnter);
더 자세한 내용은 Control.DragEnter 이벤트와 Control.DragDrop 이벤트 도움말을 참고하세요.
SSISO Community