【发布时间】:2015-11-21 09:17:15
【问题描述】:
我做了很多研究,但到目前为止还没有结果......
我发现的唯一链接与我的情况有些相似甚至都不起作用:
- Simple drag and drop example
- How can I tell a shortcut from a file in a C# drag and drop operation?
- Drag and Drop Files with C#
- drag and drop file into textbox
- e.Data.GetDataPresent not working in WinForms drag-and-drop handler?
基本上,首先,我希望代码能够识别文件是“.url”扩展名,或者更确切地说,是互联网快捷方式,最常用于 Google Chrome 和 Mozilla Firefox,也很可能是我没有广泛测试的所有其他网络浏览器。
如果你不知道我指的是什么类型的快捷方式,我的意思是如下图所示。
下面是我在文本框的 DragDrop 事件处理程序中使用的当前代码,它似乎不起作用:
string file = (string)(e.Data.GetData(DataFormats.FileDrop, false));
if (Path.GetExtension(file) == ".url")
{
//Do Stuff Here
}
显然,代码甚至无法获取快捷方式的假定文件名。此快捷方式是已经从浏览器拖放到桌面的那种快捷方式。因此,在这种情况下,该快捷方式是被拖放以供代码处理的快捷方式。
(不确定这是否会有所不同,但我尝试将“DataFormats.FileDrop”替换为“DataFormats.Serialization”以及“DataFormats .Html" 没有正面影响。)
另外,由于某种奇怪的原因,程序在上面代码块的第一行立即中断。 (它也恰好是我的 DragDrop 事件的第一行)
我的问题是:如何更正或修改代码(在任何程度上,即使完全改变代码),以便它可以识别.url 扩展名,然后继续将其视为普通文件。
另外,为什么在执行第一行之后代码的执行立即停止,即使已经为第一行之后的几行设置了断点(如完全跳过 if 语句)?
如果不是太多,如何只让下面一行:
e.Effect = DragDropEffects.Link;
当文件只有 Internet 快捷方式类型“.url”时在 DragEnter 事件处理程序中工作,还是不可能?
我知道 Notepad++ 能够打开和阅读内容,甚至可以编辑 Internet 快捷方式文件。虽然如果我能获得识别快捷方式的代码,我想我将能够像普通文件一样读取它。
如果可能的话,我希望得到一个带有工作代码的答案。很抱歉这个问题太长了,因为我想尽量准确地回答我的问题。
【问题讨论】:
标签: c# winforms visual-studio-2010 .net-4.0 drag-and-drop