当我尝试以下结果时,结果出乎意料。任何想法将不胜感激!
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 什么都不是
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。
感谢您的任何想法和耐心!:)