zoukankan      html  css  js  c++  java
  • 拖拽获得文件路径

    主要是响应控件的两个事件:一个是触发鼠标拖动并进入控件区域时,一个是触发鼠标拖动到该控件区域时的释放.
    拖动的对象需要从这两个事件的参数中获取,及从e中获得.
            ///先要把接受拖放功能的控件的AllowDrop功能打开.

            this.textBox2.AllowDrop = true;
            this.textBox2.Multiline = true;
            private void textBox2_DragDrop(object sender, DragEventArgs e)
            {
                ///创建一个数组类,用于保存拖动进来的数据组,这里是文件名路径的数组(多个文件拖进来的情况)
                ///e.Data.GetData方法就是获取文件名数组的功能,参数是决定关联哪种数据格式.
                ///这里运用了把 Object 强制转换为 Array 的特点.
                Array aryFiles = ((System.Array)e.Data.GetData(DataFormats.FileDrop));
                for (int i = 0; i < aryFiles.Length; i++)
                {
                    ///通过For循环把所有文件路径加到字符串label4.text里面.
                    label4.Text = aryFiles.GetValue(i).ToString();// +Environment.NewLine;
                    
                }
    
                path = label4.Text;
    
            }
    
            private void textBox2_DragEnter(object sender, DragEventArgs e)
            {
                ///拖进来时,判断拖动的数据是否是指定数据格式,并设置e.Effect的图标样式.
                if (e.Data.GetDataPresent(DataFormats.FileDrop))
                    e.Effect = DragDropEffects.Move;
                else e.Effect = DragDropEffects.None;
    
                //这里说明一下,e传进来的数据,我个人觉得应用这样判断,因为其原理是:应该用e.AllowedEffect.ToString()来判断总共源(发起方)支持哪些拖放操作.
                //如果发起方支持多种拖放操作时,用上面的判断就要注意选择结果的唯一性.否则前面的拖放样式就很可能由于本发起方有多种拖放操作及满足MOVE又满足
                //LINK而又去选择后面代码中的拖放效果,从而使其前面代码应该拥有的脱发效果失效,最终不能实现拖放操作.
                /*
     
    
                  比较清晰的判断方式可以用下面这种判断方法:
    
                  
    
                if (e.AllowedEffect.ToString().Contains("Copy") && !e.AllowedEffect.ToString().Contains("Link"))
                    e.Effect = DragDropEffects.Copy;
    
                if (e.AllowedEffect.ToString() == "Link")
                    e.Effect = DragDropEffects.Link;
    
    
                */ 
    
    
            }
        
    作者:wanglei_wan
        
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    给树莓派安装中文环境
    windows中让secureCRT正确显示中文(ssh)
    C# net winform wpf 发送post数据和xml到网页
    WebDav协议基于HTTP 1
    WCF WEB HTTP请求 WCF REST FUL
    WPF黑色背景下常用控件样式
    解决WCF大数据量传输 ,System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接
    WPF 漏斗控件 等待沙漏效果
    WPF 资源管理器 WPF Explorer
    WPF MVVM 关闭窗体
  • 原文地址:https://www.cnblogs.com/because/p/2571405.html
Copyright © 2011-2022 走看看