Как получить изображение из события vb6 MSFlexGrid OLEDragDrop
У меня есть проект VB, который конвертируется из VB6 в VB.NET.
В этом у меня есть MSFlexGrid, который используется как совместимость взаимодействия. Это означает, что он несколько преобразован в.NET, но внутренне многие механизмы все еще из VB6/COM.
Мне нужно перетащить изображение из PictureBox (который является.NET) и поместить его на flexgrid.
Вот что я делаю, чтобы инициализировать перетаскивание:
Private Sub picStartSymbol_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picStartSymbol.MouseDown
picStartSymbol.DoDragDrop(picStartSymbol.Image, DragDropEffects.Copy)
End Sub
И здесь я ловлю падение FlexGrid:
Private Sub flxConstructionPoints_OLEDragDrop(ByVal sender As Object, ByVal e As AxMSFlexGridLib.DMSFlexGridEvents_OLEDragDropEvent) Handles flxConstructionPoints.OLEDragDrop
Dim image As Image
Dim oleImage As Object
oleImage = e.data.GetData(2) ''This gets an object of type 2 (bitmap)
''How to convert oleImage to a .NET Image?
End Sub
1 ответ
Решение
У меня больше нет VB6, поэтому я не могу проверить это, но попробуйте добавить ссылку на Microsoft.VisualBasic.Compatibility и затем вызовите:
Dim image as Image = Microsoft.VisualBasic.Compatibility.VB6.IPictureToImage(oleImage)
или же
Dim image as Image = Microsoft.VisualBasic.Compatibility.VB6.IPictureDispToImage(oleImage)