728x90
반응형
private void Grid_Drop(object sender, DragEventArgs e)
{
List<string> lstFile = GetDropFilesPaths(e);
lbl.Content = "";
foreach (string s in lstFile)
{
lbl.Content += s + "\n";
}
}
/// <summary>
/// GetDropFilesPaths 드랍파일 가져오기
/// </summary>
/// <param name="e">DropData</param>
/// <returns>DropFiles</returns>
private List<string> GetDropFilesPaths(DragEventArgs e, bool deduplication = false)
{
string[] eDataFiles = (string[])e.Data.GetData(DataFormats.FileDrop);
List<string> lstFile = new List<string>();
foreach (string eDataFile in eDataFiles)
{
try
{
// 폴더이면 하위폴더 파일가져오기
if ((File.GetAttributes(eDataFile) & FileAttributes.Directory) == FileAttributes.Directory)
{
// var filesss = Directory.EnumerateFiles(eDataFile, "*.*", SearchOption.AllDirectories).Where(s => s.EndsWith(".jpg"));
var filesss = Directory.EnumerateFiles(eDataFile, "*.*", SearchOption.AllDirectories); // 하위폴더 포함
lstFile.AddRange(filesss);
}
// 파일이면 파일가져오기
else if ((File.GetAttributes(eDataFile) & FileAttributes.Directory) != FileAttributes.Directory)
{
lstFile.Add(eDataFile);
}
}
catch
{
MessageBox.Show("가져오지 못한 파일 또는 폴더가 있습니다.");
continue;
}
}
// 중복데이터제거
if (deduplication)
lstFile.Distinct();
return lstFile;
}
폴더나 파일을 Drag&Drop 했을때 하위 폴더의 폴더를 가져오는 함수
* AllowDrop="True" 로 주어야 Drag&Drop 이 된다.
728x90
반응형
'Programing (프로그래밍) > WPF & C# (C Sharp)' 카테고리의 다른 글
WPF & C# - 멀티쓰레딩 ( 멀티쓰레드 / MultiThread / Threading ) (1) | 2021.02.04 |
---|---|
WPF & C# - Error 다른 스레드가 이 개체를 소유하고 있어 호출한 스레드가 해당 개체에 액세스할 수 없습니다 ( 에러 / 쓰레드 / Thread / Dispatcher.Invoke()) (0) | 2021.02.01 |
WPF & C# - 열행 맞추어 Grid 생성하기 ( makeGrid / ColumnDefinitions / RowDefinitions ) (0) | 2021.01.30 |
WPF & C# - 비동기 async / await ( UI와 연산 분리 / 작업 후 결과값 리턴 방식 ) (1) | 2021.01.29 |
[자작] WPF & C# SearchList_Regex ( Regex Patten Serch 자동차 번호판 영업용 차량 LPR ANPR ) (2) | 2020.01.07 |
[자작] WPF&C# PACL 멀티캠뷰어 헬퍼 ( MultiCamViewer Helper ) (0) | 2019.10.18 |
[자작] 키오스크미디어월 ( kiosk media wall ) (0) | 2019.10.08 |
WPF & C# - 버블링 & 터널링 순서 ( Bubbling / Tunneling ) (0) | 2019.08.19 |