- 首發公衆號:Dotnet9
- 做者:沙漠之盡頭的狼
- 日期:202-11-27
上傳文件時,通常是提供一個上傳按鈕,點擊上傳,彈出文件(或者目錄選擇對話框),選擇文件(或者目錄)後,從對話框對象中取得文件路徑後,再進行上傳操做。html
選擇對話框代碼以下:git
OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Title = "選擇Exe文件"; openFileDialog.Filter = "exe文件|*.exe"; openFileDialog.FileName = string.Empty; openFileDialog.FilterIndex = 1; openFileDialog.Multiselect = false; openFileDialog.RestoreDirectory = true; openFileDialog.DefaultExt = "exe"; if (openFileDialog.ShowDialog() == false) { return; } string txtFile = openFileDialog.FileName;
但通常來講,對用戶體驗最好的,應該是直接鼠標拖拽文件了:github
下面簡單說說WPF中文件拖拽的實現方式。shell
其實很簡單,只要拖拽接受控件(或容器)註冊這兩個事件便可:DragEnter
、Drop
。微信
先看看個人實現效果:ui
註冊事件:操作系統
<Grid MouseMove="Grid_MouseMove" AllowDrop="True" Drop="Grid_Drop" DragEnter="Grid_DragEnter">
private void Grid_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { e.Effects = DragDropEffects.Link; } else { e.Effects = DragDropEffects.None; } }
DragDropEffects.Link:處理拖拽文件操做code
這是處理實際拖拽操做的方法,獲得拖拽的文件路徑(若是是操做系統文件快捷方式(擴展名爲lnk),則須要使用com組件(不是本文講解重點,具體看本文開源項目)取得實際文件路徑)後,便可處理後續操做(好比文件上傳)。orm
private void Grid_Drop(object sender, DragEventArgs e) { try { var fileName = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString(); MenuItemInfo menuItem = new MenuItemInfo() { FilePath = fileName }; // 快捷方式須要獲取目標文件路徑 if (fileName.ToLower().EndsWith("lnk")) { WshShell shell = new WshShell(); IWshShortcut wshShortcut = (IWshShortcut)shell.CreateShortcut(fileName); menuItem.FilePath = wshShortcut.TargetPath; } ImageSource imageSource = SystemIcon.GetImageSource(true, menuItem.FilePath); System.IO.FileInfo file = new System.IO.FileInfo(fileName); if (string.IsNullOrWhiteSpace(file.Extension)) { menuItem.Name = file.Name; } else { menuItem.Name = file.Name.Substring(0, file.Name.Length - file.Extension.Length); } menuItem.Type = MenuItemType.Exe; if (ConfigHelper.AddNewMenuItem(menuItem)) { AddNewMenuItem(menuItem); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
功能很簡單,不求精深,會用就行。htm
時間如流水,只能流去不流回。
- 首發公衆號:Dotnet9
- 做者:沙漠之盡頭的狼
- 日期:202-11-27