2

I have a VB project that is converted from VB6 to VB.NET.

In this, I have a MSFlexGrid that is used as an interop compatibiliy. That means it is somewhat converted to .NET, but internally, many of the mechanisms are still from VB6/COM.

I need to drag an image from a PictureBox (which is .NET) and drop it on the flexgrid.

This is what I do to initialize the drag:

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

And this is where I catch the drop in the 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
awe
  • 21,938
  • 6
  • 78
  • 91

1 Answers1

1

I don't have VB6 anymore so I can't test this but try adding a reference to Microsoft.VisualBasic.Compatibility and then call:

Dim image as Image = Microsoft.VisualBasic.Compatibility.VB6.IPictureToImage(oleImage)

or

Dim image as Image = Microsoft.VisualBasic.Compatibility.VB6.IPictureDispToImage(oleImage)
Chris Haas
  • 53,986
  • 12
  • 141
  • 274
  • Do you know what the VB.NET equivalent of these commands would be? – HackSlash Jul 02 '18 at 20:39
  • Sorry, I meant to ask if this could be done without the VB6 library. The namespace I was looking for is `System.Drawing.Image` and I think I was looking at the problem all wrong. I just need to throw large chunks of code out the window. – HackSlash Jul 03 '18 at 16:17