實現原理:使用擴展方法。 使用方法:在窗體的load事件或構造方法中: 擴展方法是.net提供的一個語法糖,使用它可以很方便的封裝一些通用功能。 ...
實現原理:使用擴展方法。
/// <summary> /// 控制項擴展 /// </summary> public static class ControlExt { /// <summary> /// 文件拖拽支持 /// </summary> /// <param name="control"></param> /// <param name="FileNamesCallBack">拖拽的文件路徑列表</param> public static void ControlUseDrop(this Control control,Action<List<String>> FileNamesCallBack) { control.AllowDrop = true;//設置控制項運行拖放 control.DragEnter += Control_DragEnter; control.DragDrop += (sender,e)=> { Array array = e.Data.GetData(DataFormats.FileDrop) as Array; List<String> fileNames = new List<string>(); foreach (Object item in array) { fileNames.Add(item.ToString()); } FileNamesCallBack?.Invoke(fileNames); }; }private static void Control_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { e.Effect = DragDropEffects.Link; } else { e.Effect = DragDropEffects.None; } } }
使用方法:在窗體的load事件或構造方法中:
this.txt_selectFiles.ControlUseDrop(files => { fileNames=files.Where(f => f.EndsWith(".sql")).ToList(); this.txt_selectFiles.Text = string.Join("\r\n", fileNames); });
擴展方法是.net提供的一個語法糖,使用它可以很方便的封裝一些通用功能。