2011-12-13 96 views
0

有沒有辦法知道拖動項目的來源是什麼? 也就是說我們已經將圖像從chrome/firefox/etc拖到了winforms應用程序中,並且在我想知道該項目的源代碼(可能是窗口句柄)(chrome,ff等)的時候。拖動項目的來源

+0

你不能找出,D + D合同的一部分。 – 2011-12-13 21:01:41

回答

1

不按慣例。拖放操作的來源越無知,其設計就越好。

可以通過使用自定義格式向拖放操作添加額外的元數據(字符串等)來識別源。你可以試試「探聽」各種阻力使用IDataObject.GetFormats方法滴:

private void Test_DragDrop(object sender, DragEventArgs e) 
    { 
     string[] formats = e.Data.GetFormats(); 

     foreach (string s in formats) 
     { 
      try 
      { 
       string d = (string)e.Data.GetData(s); 
       MessageBox.Show(s + "\n" + d); 
      } 
      catch { } 
     } 
    } 

注意,在這個例子中,我力的所有數據鑄造爲字符串。它通常會拋出一些例外,因爲可能還會附加非字符串值。例如,在谷歌瀏覽器中,複製一個字符串提供了8種不同的數據格式,其中只有5種是字符串。

如果您想啓動自己的拖放操作並能夠驗證您是否是源代碼,則可以使用自定義數據格式來實現此目的。

+0

不,我正在使用拖放接收器,並且無法擴展拖動項目。所以這個項目是爲我提供的。我想知道的 - 誰是可拖動項目的父項? – user1096500 2011-12-13 20:41:01