博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实现拖动文件到窗体(控件)
阅读量:6493 次
发布时间:2019-06-24

本文共 2601 字,大约阅读时间需要 8 分钟。

前言

实现从窗口外部拖文件到窗口内部并自动捕获文件地址。

第一步 开启属性

启用底层WindowAllowDrop属性,添加Drop事件。

Drop事件:当你拖动文件到对应控件后,松开触发。

Drop事件外,我们还可以使用DragEnterDragOverDragLeave三个事件。

第二步 事件代码

private void MainWindow_Drop(object sender, DragEventArgs e){    string msg = "Drop";    if (e.Data.GetDataPresent(DataFormats.FileDrop))    {        msg = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString();    }    MessageBox.Show(msg);}

 

实例1:

在WPF中的实现和WinForm中的实现99%相似,将要实现接受拖拽释放的控件添加DragEnter事件和Drop事件,本例中控件Grid grid作为接受控件,添加事件操作如下:

private void grid_Drop(object sender, DragEventArgs e){    string fileName = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString();    //获得文件名后的操作...}private void grid_DragEnter(object sender, DragEventArgs e){    if (e.Data.GetDataPresent(DataFormats.FileDrop))        e.Effects = DragDropEffects.Link;                            //WinForm中为e.Effect = DragDropEffects.Link    else e.Effects = DragDropEffects.None;                      //WinFrom中为e.Effect = DragDropEffects.None}

 

 

实例2:

///     /// MainWindow.xaml 的交互逻辑    ///     public partial class MainWindow : Window    {        public MainWindow()        {            InitializeComponent();            //启用接收 拖放            this.AllowDrop = true;        }        private void Grid_DragEnter(object sender, DragEventArgs e)        {            if (e.Data.GetDataPresent(DataFormats.FileDrop))                e.Effects = DragDropEffects.Link;            else            {                e.Effects = DragDropEffects.None;                lblFileName.Foreground = System.Windows.Media.Brushes.Red;                lblFileName.Content = "拖入的内容不是文件";            }        }        private void Grid_Drop(object sender, DragEventArgs e)        {            System.Array array = e.Data.GetData(DataFormats.FileDrop) as Array;            string fileName = array.GetValue(0).ToString();            lblFileName.Content = fileName;            //获取图片            System.Drawing.Bitmap bit = new Bitmap(fileName);            //获取图片的格式            lblPixedFormat.Content = bit.PixelFormat;            //显示图片            IntPtr hBitmap = bit.GetHbitmap();            ImageSource imgS = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(                hBitmap,                IntPtr.Zero,                Int32Rect.Empty,                BitmapSizeOptions.FromEmptyOptions()                );            imgOne.Source = imgS;        }    }

显示结果:

更多参考:

转载地址:http://wokyo.baihongyu.com/

你可能感兴趣的文章
HDU1318 POJ1590 UVA401 ZOJ1325 Palindromes【回文+入门练习】
查看>>
Oracle数据库,查询语句、内置函数
查看>>
一个简单的json数组解析(阿里巴巴)
查看>>
A function for new storage space of string
查看>>
MySQL中的约束简单使用
查看>>
2013年第二周的总结
查看>>
搭建SSH+proxool连接池开发环境
查看>>
【C/C++和指针】printf 的那些事
查看>>
VMware(Plus 1)
查看>>
DOS和DDOS你知道多少?
查看>>
2013计算机视觉代码合集
查看>>
在vue中如何实现购物车checkbox的三级联动
查看>>
数据库常用语句
查看>>
Python_爬虫1
查看>>
智能指针
查看>>
hibernate 检索策略
查看>>
shell小脚本--从laod博客更新hosts文件
查看>>
winform登录窗体加载等待图片
查看>>
eclipse配置
查看>>
转:Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB
查看>>