我有一个文件列表,其名称位于列表框中,其内容存储在 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);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)