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
        
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    IOS获取senderTitle
    IOSSegmentedControl(添加到Nav上)的简单使用方法
    MinaService
    java nio(reactor/selector)
    Java,反射机制
    http, get, post, HttpClient
    java.util.ConcurrentModificationException
    愛上一個不該 愛的人
    how to be a good ladyprogrammer?
    JQuery(那个夏日的午后)
  • 原文地址:https://www.cnblogs.com/because/p/2571405.html
Copyright © 2011-2022 走看看