Laboratory/Develop

응용프로그램의 ListBox에 파일 끌어서 놓기

theking 2008. 2. 18. 08:06

본 문서에서는 Visual C# .NET 응용 프로그램에 끌어서 놓기 기능을 제공하는 방법을 단계별로 설명합니다. 파일 끌어서 놓기 작업의 대상으로는ListBox컨트롤을 사용합니다.

 

ListBox컨트롤은 처리해야 하는 두 가지의 끌어서 놓기 이벤트(DragEnterDragDrop)를 제공합니다.DragEnter이벤트는 컨트롤의 범위 내로 개체를 끌 때 발생하며 끌고 있는 개체가 컨트롤에 놓으려는 개체인지 여부를 확인하는 데 사용합니다. 이 이벤트는 파일을 컨트롤로 끄는 경우에 처리하게 됩니다. 이 이벤트는 끌고 있는 개체에 따라 컨트롤로 개체를 끌 때 해당 아이콘이 표시되도록 합니다.DragDrop이벤트는 끌고 있는 개체를 컨트롤에 놓았을 때 발생합니다. 이 이벤트는 개체를 검색할 때 처리하게 됩니다. 데이터를 검색할 때는Data개체가 사용됩니다.

Data개체의GetData메서드는ListBox컨트롤로 끈 파일의 전체 경로 이름을 포함하는 문자열 배열을 반환합니다. 이 파일 경로 정보를 사용하여 파일에 필요한 작업을 수행할 수 있습니다. 예를 들어,System.IO네임스페이스의 클래스를 사용하여 파일을 열고 읽으며, 파일을 이동하거나 새 위치로 복사할 수 있습니다. 이 예제에서는ListBox컨트롤로 끈 파일에 대한 전체 경로만 추가합니다.

Visual C# .NET 응용 프로그램에 파일 끌어서 놓기 기능을 제공하려면 다음과 같이 하십시오.

  1. Visual C# .NET에서 Windows Forms 응용 프로그램을 새로 만듭니다. 기본적으로 Form1이 만들어집니다.
  2. 도구 상자를 사용하여 Form1에ListBox컨트롤을 추가합니다.
  3. 속성 창에서ListBox컨트롤의AllowDrop속성을True로 변경하여 개체를 컨트롤로 끌 수 있도록 허용합니다.
  4. 솔루션 탐색기에서 Form1을 마우스 오른쪽 단추로 누른 다음코드 보기를 누릅니다.
  5. DragEvent이벤트를 처리하려면 Windows Forms 디자이너가 Form1 클래스에 생성하는 코드 부분 아래에 다음 메서드를 추가합니다.
    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;}
  6. DragDrop이벤트를 처리하려면 5단계에서 Form1 클래스에 추가한 메서드 바로 뒤에 다음 메서드를 추가합니다.
    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]);}
  7. 두 이벤트 처리기를 컨트롤 이벤트와 연관시키려면 아래 코드를 Form1의InitializeComponent메서드에 추가합니다. 반드시 ListBox1을 시작한 후에 코드를 추가합니다.
    this.listBox1.DragDrop += new           System.Windows.Forms.DragEventHandler(this.listBox1_DragDrop);this.listBox1.DragEnter += new           System.Windows.Forms.DragEventHandler(this.listBox1_DragEnter);
  8. 프로젝트를 빌드하고 실행합니다.
  9. 바탕 화면이나 다른 폴더에서 하나 이상의 파일을ListBox컨트롤로 끕니다. 파일의 전체 경로가ListBox컨트롤에 추가되었는지 확인합니다.

더 자세한 내용은 Control.DragEnter 이벤트와 Control.DragDrop 이벤트 도움말을 참고하세요.

 

자료출처 :http://support.microsoft.com/