C# WPF:把文件给我拖进来!!!
生活随笔
收集整理的這篇文章主要介紹了
C# WPF:把文件给我拖进来!!!
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
? private?void?Grid_DragEnter(object?sender,?DragEventArgs?e)
{if?(e.Data.GetDataPresent(DataFormats.FileDrop)){e.Effects?=?DragDropEffects.Link;}else{e.Effects?=?DragDropEffects.None;}
}
首發(fā)公眾號:Dotnet9
作者:沙漠之盡頭的狼
日期:202-11-27
一、本文開始之前
上傳文件時,一般是提供一個上傳按鈕,點擊上傳,彈出文件(或者目錄選擇對話框),選擇文件(或者目錄)后,從對話框?qū)ο笾腥〉梦募窂胶?#xff0c;再進行上傳操作。
對話框選擇文件選擇對話框代碼如下:
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;但一般來說,對用戶體驗最好的,應(yīng)該是直接鼠標拖拽文件了:
百度網(wǎng)盤拖拽上傳文件下面簡單說說WPF中文件拖拽的實現(xiàn)方式。
二、WPF中怎樣拖拽文件呢?
其實很簡單,只要拖拽接受控件(或容器)注冊這兩個事件即可:DragEnter、Drop。
先看看我的實現(xiàn)效果:
拖拽文件進QuickApp中Xaml中注冊事件
注冊事件:
<Grid??MouseMove="Grid_MouseMove"?AllowDrop="True"?Drop="Grid_Drop"?DragEnter="Grid_DragEnter">事件處理方法:
Grid_DragEnter處理方法
DragDropEffects.Link:處理拖拽文件操作
Grid_Drop處理方法
這是處理實際拖拽操作的方法,得到拖拽的文件路徑(如果是操作系統(tǒng)文件快捷方式(擴展名為lnk),則需要使用com組件(不是本文講解重點,具體看本文開源項目)取得實際文件路徑)后,即可處理后續(xù)操作(比如文件上傳)。
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);} }三、本文Over
功能很簡單,不求精深,會用就行。
總結(jié)
以上是生活随笔為你收集整理的C# WPF:把文件给我拖进来!!!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET5发布了,腾讯招聘点名要求精通M
- 下一篇: 服务器重新部署踩坑记