加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 从.net winforms应用程序实现文件拖动到桌面?

发布时间:2020-12-15 18:08:24 所属栏目:百科 来源:网络整理
导读:我有一个文件列表,其名称在列表框中,其内容存储在SQL表中,并希望我的应用程序的用户能够选择列表框中的一个或多个文件名并将其拖到桌面,桌面上的实际文件.我找不到任何有关如何做到这一点的文档.任何人都可以解释或指出解释吗? 稍后添加: 我已经能够通过处
我有一个文件列表,其名称在列表框中,其内容存储在SQL表中,并希望我的应用程序的用户能够选择列表框中的一个或多个文件名并将其拖到桌面,桌面上的实际文件.我找不到任何有关如何做到这一点的文档.任何人都可以解释或指出解释吗?

稍后添加:
我已经能够通过处理DragLeave事件来完成这项工作.在其中,我创建一个临时目录中的文件,其中所选的名称和内容从SQL Server中提取.然后将文件的路径放入对象中:

var files = new string[1];
files[0] = "full path to temporary file";
var dob = new DataObject();    
dob.SetData(DataFormats.FileDrop,files);
DoDragDrop(dob,DragDropEffects.Copy);

但是这看起来效率很低,笨拙,而且还没有找出一个很好的方式来摆脱累积的临时文件.

解决方法

我可以帮你一些这里有一些代码可以让你从列表框中拖出一些东西,当桌面上的东西被删除时,它会创建一个你机器上存在的文件到桌面的副本.
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.listBox1.Items.Add("foo.txt");
        this.listBox1.MouseDown += new MouseEventHandler(listBox1_MouseDown);
        this.listBox1.DragOver += new DragEventHandler(listBox1_DragOver);
    }

    void listBox1_DragOver(object sender,DragEventArgs e)
    {
        e.Effect = DragDropEffects.Copy;
    }

    void listBox1_MouseDown(object sender,MouseEventArgs e)
    {
        string[] filesToDrag = 
        {
            "c:/foo.txt"
        };
        this.listBox1.DoDragDrop(new DataObject(DataFormats.FileDrop,filesToDrag),DragDropEffects.Copy);
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读