공학속으로/C#

[C#] 파일 폴더 드래그앤드롭

더월드 2023. 7. 7.

드래그앤드롭 설정하기

 

TextEditBox(또는 listBox) 창을 생성

텍스트박스나 리스트박스 선택 > 속성창의 동작 메뉴에서 'AllowDrop'을 'True'로 변경합니다.

 

TextEdit 창을 선택 > 이벤트함수 생성창의 끌어서 놓기 메뉴에서 DragDrop 과 DragEnter을 실행합니다.

드래그앤드롭 이벤트함수 설정

 

파일 드래그앤드롭

 DragDrop 과 DragEnter 이벤트함수를 아래 코드 처럼 수정하시면 됩니다.

//파일 경로 가져오기: 드래그앤드롭
private void filesplit_textBox_DragEnter(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        e.Effect = DragDropEffects.Copy | DragDropEffects.Scroll;
    }
}

private void filesplit_textBox_DragDrop(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
    	// 파일 경로를 가져온다.
        string[] strFilePath = (string[])e.Data.GetData(DataFormats.FileDrop);
        filesplit_textBox.Text = strFilePath[0];
    }
}

 

 

텍스트박스에서 폴더 드래그앤드롭

파일 드래그앤드롭 설정과 같지만 DragDrop 코드를 살짝 변경하시면 됩니다.

//폴더 경로 가져오기: 드래그앤드롭
private void filesum_textBox_DragEnter(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        e.Effect = DragDropEffects.Copy | DragDropEffects.Scroll;
    }
    else
    {
        e.Effect = DragDropEffects.None;
    }
}

private void filesum_textBox_DragDrop(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        # 디렉토리 경로를 텍스트박스에 넣는다.
        var directoryName = (string[])e.Data.GetData(DataFormats.FileDrop);
        filesum_textBox.Text = directoryName[0];
    }
}

 

 

리스트 박스에서 파일 또는 폴더 드래그앤드롭

-설정 방법은 위 텍스트에디트 박스에서 하던 방식으로 하면 됩니다.

-코드만 살짝 변경하시면 됩니다.

//리스트박스: 드래그앤드롭
private void listBox1_DragEnter(object sender, DragEventArgs e)
{ 
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        e.Effect = DragDropEffects.Copy | DragDropEffects.Scroll;
    }
    else
    {
        e.Effect = DragDropEffects.None;
    }
}

private void listBox1_DragDrop(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        string[] files = e.Data.GetData(DataFormats.FileDrop, true) as string[];
        foreach (string file in files)
        {
            listBox1.Items.Add(file);
        }
    }
}

 

댓글

💲 추천 글