当前位置: 移动技术网 > IT编程>开发语言>.net > 让您的WinForm控件快速支持拖拽文件

让您的WinForm控件快速支持拖拽文件

2019年05月15日  | 移动技术网IT编程  | 我要评论

中国汽配,尖叫皇后第一季,孙中山的资料简介

实现原理:使用扩展方法。

    /// <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提供的一个语法糖,使用它可以很方便的封装一些通用功能。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网