본문 바로가기
WPF

WPF TextBox Drag and Drop(텍스트박스에 파일경로 표시)

by DarkRock 2023. 9. 7.
반응형

구현한 로직 테스트를 위해 

간단한 UI를 만들어볼까 해서 WPF를 잠깐 시간 내서 보고 있는데 
엄청난 기능을 쉽게 구현할수 있게 해 줘서 WPF에 매일 감탄하고 있습니다. ㅎㅎ

아래는 임의의 파일을 textbox에 drag and drop 해서 파일경로를 표시하는 방법입니다.

 

visual stduio 2017로 wpf 프로젝트 생성 후 도구 상자를 이용해서

textbox를 생성하면 xaml에서 다음과 같이 나오는데,

<TextBox HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>

 

여기에 아래와같이 x:Name="textBox" AllowDrop="True" PreviewDragOver="textBoxPreviewDragOver" Drop="textBoxDrop" 을 추가해 줍니다.

<TextBox x:Name="textBox" AllowDrop="True" PreviewDragOver="textBoxPreviewDragOver" Drop="textBoxDrop" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>

 

이제 cs 파일에서 2개의 함수 textBoxPreviewDragOver, textBoxDrop을 아래와 같이 정의해주면 됩니다.

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void textBoxPreviewDragOver(object sender, DragEventArgs e)
        {
            e.Handled = true;
        }

        private void textBoxDrop(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);

                // 파일 경로들을 개행 문자로 결합하여 문자열 생성
                string filePaths = string.Join("\n", files);

                // TextBox에 파일 경로 문자열 할당
                textBox.Text = filePaths;
            }
        }
    }

 

실행시키면 아래와 같이 임의의 파일을 마우스를 이용해 textbox 위치에 drag and drop 시키면 textbox에 파일 경로가 표시됩니다.

반응형

'WPF' 카테고리의 다른 글

모호한 참조 오류  (0) 2023.09.11