C#拖放文件形成
Posted
技术标签:
【中文标题】C#拖放文件形成【英文标题】:C# drag and drop files to form 【发布时间】:2012-01-22 23:16:27 【问题描述】:如何通过拖放将文件加载到表单中?
会出现什么事件?
我应该使用哪个组件?
以及拖放到表单后如何确定文件名和其他属性?
谢谢!
代码
private void panel1_DragEnter(object sender, DragEventsArgs e)
if (e.Data.GetDataPresent(DataFormats.Text))
e.Effect = DragDropEffects.Move;
MessageBox.Show(e.Data.GetData(DataFormats.Text).toString());
if (e.Data.GetDataPresent(DataFormats.FileDrop))
好的,这行得通。
文件呢?如何获取文件名和扩展名?
这只是一个dragEnter
操作。
【问题讨论】:
各种与拖动相关的事件都以协调的方式一起处理。您是否阅读过相关文档? How do I drag and drop files into a c# application? 的可能重复项 【参考方案1】:此代码将循环并打印拖入窗口的所有文件的全名(包括扩展名):
if (e.Data.GetDataPresent(DataFormats.FileDrop))
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
foreach (string filePath in files)
Console.WriteLine(filePath);
【讨论】:
【参考方案2】:查看以下链接了解更多信息
http://doitdotnet.wordpress.com/2011/12/18/drag-and-drop-files-into-winforms/
private void Form2_DragDrop(object sender, DragEventArgs e)
if (e.Data.GetDataPresent(DataFormats.FileDrop))
string[] filePaths = (string[])(e.Data.GetData(DataFormats.FileDrop));
foreach (string fileLoc in filePaths)
// Code to read the contents of the text file
if (File.Exists(fileLoc))
using (TextReader tr = new StreamReader(fileLoc))
MessageBox.Show(tr.ReadToEnd());
【讨论】:
链接内容的摘要需要高质量的答案。并且在发布指向您自己博客的链接时要小心:它看起来非常像垃圾邮件。【参考方案3】:当然,当您的 Control/Form AllowDrop 属性为 true 时,您需要使用以下 2 个事件。
private void Home_DragOver(object sender, DragEventArgs e)
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.Link;
else
e.Effect = DragDropEffects.None;
private void Home_DragDrop(object sender, DragEventArgs e)
if (e.Data.GetDataPresent(DataFormats.FileDrop))
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
//YourOpenMethod(files);
享受...
【讨论】:
我认为在这种情况下最好使用DragEnter
而不是DragOver
以节省处理器时间。以上是关于C#拖放文件形成的主要内容,如果未能解决你的问题,请参考以下文章