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

前端之家收集整理的这篇文章主要介绍了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);
    }
}

猜你在找的C#相关文章