반응형
구현한 로직 테스트를 위해
간단한 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에 파일 경로가 표시됩니다.
반응형