微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我有一个文件列表,其名称在列表框中,其内容存储在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);
    }
}

原文地址:https://www.jb51.cc/csharp/97666.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐