让您的WinForm控件快速支持拖拽文件
程序员文章站
2022-07-11 08:18:01
实现原理:使用扩展方法。 使用方法:在窗体的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提供的一个语法糖,使用它可以很方便的封装一些通用功能。
上一篇: EL_JSTL