2010-08-24 72 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(格式文本)。某些應用程序會知道某些流行程序的本機格式,以便它們可以支持從這些應用程序拖放(作爲功能)。