본문 바로가기
프로그래밍/C# (WinForms)

C#, WinForms ] Drag & Drop 으로 파일 경로 얻기

by eteo 2023. 5. 14.

 

 

파일 시스템에 액세스하기위해 using System.IO; 선언

 

 

 

 

Form의 AllowDrop 속성 true

 

일반적으로 Form이나 Control에는 파일을 Drop할 수 없기 때문에, 해당 Form이나 Control에 AllowDrop 속성을 true로 설정해주어야 한다.

 

this.AllowDrop = true;

 

 

 

 

 

 

DragEnter, DragDrop 이벤트 핸들러 추가

 

 

this.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);

 

 

 

 

 

 

 

DragEnter 이벤트 : 사용자가 무언인가를 드래그 앤 드롭해서 해당 Form에 들어올 때 이벤트가 발생한다.

DragDrop 이벤트 : 드롭하는 순간 발생한다.

 

private void Form1_DragEnter(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        e.Effect = DragDropEffects.Copy;
    }
}

 

Drag & Drop이 시작될 때 DragEventArgs e 로 전달된 Data가 DataFormats.FileDrop 포맷인지 확인하고 맞는 경우엔 DragDrop 효과를 Copy로 설정한다.

 

DataFormats 클래스 : 드래그 앤 드롭 작업에 사용되는 데이터 형식의 이름을 정의하는 클래스

 

DataFormats.FileDrop 상수 : 파일 경로의 배열을 나타내는 드래그 앤 드롭 데이터 형식

 

 

https://namocom.tistory.com/299

 

 

 

private void Form1_DragDrop(object sender, DragEventArgs e)
{
    // Drag & Drop이 완료되면, 파일 경로를 확인하여 표시
    string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
    if (files.Length > 0 && File.Exists(files[0]))
    {
        string filePath = files[0];
        this.textBox1.Text = filePath;
    }
}

 

Drag & Drop이 완료되면, GetData()함수를 사용해 파일 경로의의 리스트를 가져오고, 파일 경로가 존재하는 경우 textBox에 표시한다.

 

 

 

 

사용예시

 

2023.05.14 - [프로그래밍/C# (WinForms)] - C#, WinForms ] CRC Checker

 

C#, WinForms ] CRC Checker

private void button1_Click(object sender, EventArgs e) { // 초기 디렉토리 설정 openFileDialog1.InitialDirectory = "C:\\"; // 파일 필터 설정 openFileDialog1.Filter = "모든 파일 (*.*)|*.*|텍스트 파일 (*.txt)|*.txt|바이너리 파일 (

eteo.tistory.com