1

次のことを試してみると、結果は予想外です。どんなアイデアでも大歓迎です!

    Class DataObjectSub
        Inherits DataObject

    End Class

    Sub Test()

        Dim myObject = New DataObjectSub

        myObject.SetData("Test")
        Clipboard.SetDataObject(myObject)

        Dim myRetrievedObject As IDataObject = Clipboard.GetDataObject
        Console.Write(myRetrievedObject.GetType.ToString)

        Dim myRetrievedObject2=TryCast(Clipboard.GetDataObject,DataObjectSub)

    End Sub

myRetrievedObject2 は Nothing です

Write ステートメントの出力は、"System.Windows.Forms.DataObject" です。「DataObjectSub」ではないでしょうか。明らかな何かが欠けていますか?

リクエストに応じて編集:

ドラッグ/ドロップ操作の場合、その DataObject (iDataObject を実装) が再び使用されます。これを行うことができます。

Sub TestDragDrop

Dim myObject as iDataObject=new DataObjectSub

someControl.DoDragDrop(myObject, myAllowedEffects)

End Sub

後で... DragOver イベントハンドラーで:

Sub anotherControl_DragOver(sender as object, e as DragEventArgs)

Dim myRetrievedObject1 as DataObjectSub = TryCast(e.Data, DataObjectSub)
Dim myRetrievedObject2 as IDataObject = e.Data


End Sub

myRetrievedObject1 と myRetrievedObject2 はどちらも Nothing ではありません。取得された両方のオブジェクトの型は DataObjectSub です。

アイデアと忍耐に感謝します!:)

4

1 に答える 1