我正在对在浏览器窗口中选择的锚文本执行拖放操作到使用C#创建的应用程序。
考虑此链接
<a href="http://www.google.com">Google Me</a>
对于IE浏览器......
当我选择锚定文字“Google Me”并将其放到我的应用程序中时,删除的文字是“ Google Me ”。
对于Chrome,Firefox,Safari ....
在执行相同操作时,删除的文字为“ http://www.google.com ”。
我尝试在其他一些应用程序上执行此操作,例如Notepad ++,Eclipse,也发生了同样的事情。在其他一些应用程序中,如Thunderbird,从IE拖放是相同的,从其他应用程序,格式化的锚链接被删除。
这是关于各种浏览器中不同的拖放操作的实现吗?如果没有,可以在删除文本的应用程序中更改拖放实现吗?
我是C#的完全新手,不知道如何实现拖放操作。对此感到好奇。
此致
答案 0 :(得分:1)
当您拖放时,源应用程序提供数据对象并将其放入系统剪贴板,以便目标应用程序(将发生丢弃)可以获取数据。实际数据格式由源应用程序控制,无法更改。为了更容易实现互操作性,有一些known data formats和源应用程序可以选择支持除其本机数据格式之外的多种格式。因此,它将从原生格式提供对支持的数据格式的一些转换。因此,在您的情况下,您可能要求文本数据格式,源应用程序将根据其实现提供链接文本或锚文本。尝试使用html格式(e.Data.GetData(DataFormats.Html
),您可能会得到一致的结果。
编辑:要回答问题的其他部分,许多目标应用程序(如各种编辑器)会查看剪贴板数据并查询它们支持的各种格式,并选择它们支持的最丰富的数据格式。例如,word将优先于纯文本的rtf(格式化文本),依此类推。一些应用程序会知道一些流行程序的原生格式,以便它们可以支持拖动和放大。从这些应用程序中删除(作为一项功能)。