gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 08:21:12 27 4
gpt4 key购买 nike

我有一个文件列表,它们的名称在列表框中,它们的内容存储在 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# - 实现文件从 .net winforms 应用程序拖动到桌面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1008984/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com