2012-02-21 49 views

回答

6

DataObject處理不處理類層次結構 - 它是從給定數據類型的全名派生而來的直串字符串,所以它沒有上下文來提供它的子類知識。我剛剛碰到了在樹視圖中執行拖放的完全相同的問題。

我有兩個選擇(這些可能是拖放特定 - 如果這不是你的問題,它可能不是一個很大的用處) - 都依賴於更改數據對象的來源(再次,如果你沒有訪問權限,可能沒有多大用處)。

  1. 創建一個包裝類,它需要一個ItemType實例,並調用DoDragDrop時,傳遞的包裝而不是實際的實例。另一方面,測試DataObject.GetData(typeof(WrapperClass))

  2. 再一次,在設置數據對象的地方,自己設置一個DataObject實例 - 例如。致電

    ctl.DoDragDrop(new DataObject(typeof(ItemType).FullName, itemTypeInstance), 
        DragDropEffects.Move|DragDropEffects.Copy) 
    

    那麼你可以在另一邊使用DataObject.GetData(typeof(ItemType))

+0

謝謝,如此優雅和簡單:)我遇到了這個問題做拖放操作。很難相信在使用子類:/ – 2012-02-23 09:02:03

+0

+1進行這些操作時存在如此大的缺失。好的解決方案 – SRKX 2012-05-24 14:22:13