Drag & Drop auf Picturebox in einem Dialog geht nicht

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Drag & Drop auf Picturebox in einem Dialog geht nicht

    Hallo zusammen,
    ich habe gerade ein Problem, wo nicht weiterkomme, was ich so auch noch nicht hatte. Aber was jetzt so gemacht werden muss.

    Von der MainForm (der Hauptform) lässt sich ohne Probleme ein Bild per Drag & Drop in eine Picturebox ziehen. Macht man
    jetzt das gleiche in einem Dialog der von der Hauptform aus per Button geöffnet wird, funktioniert es nicht. Es spielt auch keine Rolle
    ob der Dialog Modal oder der gleichen geöffnet wird. Man kann auf der zweiten Form nichts per Drag & Drop ablegen. Auch
    mit AllowDrop = true den selben Events DragDrop und DragEnter, komm nur der rote Kreis mit Strich durch.

    Gefühlt habe ich jetzt auch alle Konstellationen durchprobiert.

    Hat das schon mal einer gehabt, gibt's da ne Lösung für mit Sicherheit, oder?! Oder ein Workaround!

    Dank euch schon mal!
    VG steel
    Geht doch....

    MainForm:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Public Sub New()
    3. InitializeComponent()
    4. End Sub
    5. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    6. Dim f2 As New Form2()
    7. f2.Show()
    8. End Sub
    9. End Class


    Form2 mit PictureBox

    VB.NET-Quellcode

    1. Public Class Form2
    2. Public Sub New()
    3. InitializeComponent()
    4. Me.PictureBox1.AllowDrop = True
    5. End Sub
    6. Private Sub PictureBox1_DragEnter(sender As Object, e As DragEventArgs) Handles PictureBox1.DragEnter
    7. If e.Data.GetDataPresent(DataFormats.FileDrop) Then
    8. e.Effect = DragDropEffects.All
    9. End If
    10. End Sub
    11. Private Sub PictureBox1_DragDrop(sender As Object, e As DragEventArgs) Handles PictureBox1.DragDrop
    12. Dim data As String() = DirectCast(e.Data.GetData(DataFormats.FileDrop), String())
    13. If data.Length > 0 Then
    14. Me.PictureBox1.ImageLocation = data(0)
    15. End If
    16. End Sub
    17. End Class
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SpaceyX“ ()

    Was soll das mit dem Subform zu tun haben? Innerhalb des Forms ganz normal:

    VB.NET-Quellcode

    1. Private Sub PictureBox2_MouseDown(sender As Object, e As MouseEventArgs) Handles PictureBox2.MouseDown
    2. DoDragDrop(PictureBox2.Image, DragDropEffects.All)
    3. End Sub
    4. Private Sub PictureBox1_DragOver(sender As Object, e As DragEventArgs) Handles PictureBox1.DragOver
    5. e.Effect = DragDropEffects.All
    6. End Sub
    7. Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    8. PictureBox1.AllowDrop = True
    9. End Sub
    10. Private Sub PictureBox1_DragDrop(sender As Object, e As DragEventArgs) Handles PictureBox1.DragDrop
    11. PictureBox1.Image = DirectCast(e.Data.GetData(GetType(Bitmap)), Image)
    12. End Sub


    ##########

    @SpaceyX: Nee, AllowDrop gibt's bei der PicBox. Einfach hinschreiben. Wird nur nicht von IntelliSense angezeigt, so wie Focus bei anderen Controls.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Lol? Bei mir gibts die Property AllowDrop der PictureBox-Klasse nicht....

    Omg, gibt es diesen Bug immer noch, wo nicht alle Properties, Funktionen angezeigt werden? Nix für ungut, ich korrigiere meinen Post.

    @VaporiZed jo, habs... Thx!
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    SpaceyX schrieb:

    die Property AllowDrop der PictureBox-Klasse
    gibt es zwar nicht im Designer, wohl aber kannst Du sie im Code reinschreiben und dann funktioniert es.
    @All:
    Möglicherweise funktioniert D&D nicht, wenn das Programm mit Administrator-Rechten läuft.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    ErfinderDesRades schrieb:

    AllowDrop ist ein Property, was man im Designer einstellt.
    Hatten wir bereits:

    RodFromGermany schrieb:

    gibt es zwar nicht im Designer, wohl aber kannst Du sie im Code reinschreiben und dann funktioniert es.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!