2010-08-24 68 views
1

我正在执行拖放操作,将在浏览器窗口中选定的锚文本拖放到使用C#创建的应用程序上。从浏览器窗口拖放选定的锚文本

考虑这个链接

<a href="http://www.google.com">Google Me</a> 

在IE浏览器的情况下...

当我选择锚文本“谷歌我”并将它放到我的应用程序,文本下跌是“谷歌Me“。

在Chrome浏览器,火狐,Safari浏览器的情况下....

做文字下降相同的操作是 “http://www.google.com”。

我试着在其他一些应用程序上做这件事,就像Notepad ++,Eclipse一样,也发生了同样的事情。在其他一些应用程序中,例如Thunderbird,从IE拖放的方式与其他应用程序相同,格式化的锚链接也被丢弃。

这是关于不同浏览器中拖放操作的实现吗?如果不是,拖放实现可以在文本被删除的应用程序中更改吗?

我是C#中的一名完全新手,不知道如何实现拖放操作。刚刚对此感到好奇。

问候

回答

1

当你拖放,源应用程序提供数据对象和被投入到系统剪贴板,这样的目标应用程序(将发生下降)可以得到的数据。实际的数据格式由源应用程序控制,不能更改。为了更容易的互操作性,有一些known data formats和源应用程序可以选择支持多种格式,除了它的本地数据格式。所以它会提供一些转换为支持原生格式的数据格式。因此,就你而言,你可能要求输入文本数据格式,并且源应用程序会根据其实现提供链接文本或锚文本。尝试使用html格式(e.Data.GetData(DataFormats.Html),您可能会得到一致的结果。

编辑:为了回答您问题的其他部分,许多目标应用程序(例如各种编辑器)都会查看剪贴板数据并查询它们支持的各种格式,并且会选择它们支持的最丰富的数据格式。例如,单词将优先于纯文本等rtf(格式文本)。某些应用程序会知道某些流行程序的本机格式,以便它们可以支持从这些应用程序拖放(作为功能)。