Programing (프로그래밍)/WPF & C# (C Sharp)
WPF C# - 함수 - GetDropFiles 드래그앤드랍 파일 가져오기 (drag&drop)
insurang
2020. 6. 14. 01:23
728x90
반응형
SimpleLayer.zip
0.04MB
SimpleLayer.exe
0.01MB
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
반응형