Zum Inhalt springen

VB.net DragDrop funktioniert nicht


mbembenek

Empfohlene Beiträge

Hallo,

ich habe ein Programm wobei man Bilder aus dem Explorer auf das Formular ziehen kann und angezeigt werden soll.

Das sofortige Anzeigen über DragEnter hat auch funktioniert.

Jetzt wollte ich es aber so machen das wenn ich erst die Maustaste loslasse das Bild angezeigt wird und habe die Methode DragDrop benutzt.

Nur jetzt funktioniert es nicht mehr. sobald ich ein Bild auf das formular ziehe wechselt der Mauszeiger sich in einem Durchfahrtsverbotsschild und es passiert nichts.

Was ist denn bei mir der Fehler? Danke für eine Antwort.

Hier der Code:


Imports System.IO

Imports System.Windows.Forms

Public Class frmBetrachter

#Region "DragDrop"


    Private Sub frmBetrachter_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop

        e.Effect = DragDropEffects.Copy

        Dim Dateien() As String = CType(e.Data.GetData(DataFormats.FileDrop), String())


        Ausgabe(Dateien)

    End Sub


#End Region

    Sub Ausgabe(ByVal Dateien() As String)

        Dim puffer(0) As Byte

        Dim g As Graphics = Me.CreateGraphics

        Dim s As String = ""

        'PICS aus dem Explorer anzeigen 

        If Dateien.GetUpperBound(0) = 0 Then


        End If

        Dim fs As New IO.FileStream(Dateien(0), FileMode.Open, FileAccess.Read)

        If fs.Name.EndsWith("bmp") _

        OrElse fs.Name.EndsWith("jpg") _

        OrElse fs.Name.EndsWith("gif") _

            OrElse fs.Name.EndsWith("png") Then

            Dim imgbild As Image = Image.FromStream(fs)

            g.Clear(Color.Black)

            g.DrawImage(imgbild, 10, 10)



        Me.Text = fs.Name


        Else

            Refresh()

            For Each d As String In Dateien

                s &= d & vbCrLf

            Next

            s &= vbCrLf & vbCrLf _

            & "Zum Anzeigen der Dateien ziehe Sie nun eine Datei auf die Flche!"

            Dim f As New Font("Arial", 12, FontStyle.Regular, GraphicsUnit.Pixel)

            g.DrawString(s, f, Brushes.Beige, 10, 10)

        End If

    End Sub

    Dim ptmaus As Point



    Private Sub frmBetrachter_Invalidated(ByVal sender As Object, ByVal e As System.Windows.Forms.InvalidateEventArgs) Handles Me.Invalidated

    End Sub

    Private Sub frmBetrachter_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown

        If e.Control And e.KeyCode = Keys.V Then

            Refresh()

        ElseIf e.Control And e.KeyCode = Keys.F Then

            Dim meinpea As New PaintEventArgs(Me.CreateGraphics, Me.ClientRectangle)

            clipformarteeinfgen(meinpea)

        End If

    End Sub

    Private Sub frmBetrachter_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove

        ptmaus = e.Location

    End Sub

    Private Sub tsiFormateAnzeigen_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles tsiFormateAnzeigen.Click

        Dim meinpea As New PaintEventArgs(Me.CreateGraphics, Me.ClientRectangle)

        clipformarteeinfgen(meinpea)

    End Sub


    Private Sub clipdateneinfgen(ByVal sender As Object, ByVal e As MouseEventArgs) Handles Me.MouseDown

        Dim s As String = ""

        Dim g As Graphics = Me.CreateGraphics

        If e.Button = Windows.Forms.MouseButtons.Left Then

            With My.Computer.Clipboard

                Select Case True

                    Case .ContainsImage

                        s = "image"

                        g.DrawImage(System.Windows.Forms.Clipboard.GetImage, New Point(10, 10))

                    Case .ContainsText

                        s = "text"

                        Dim f As New Font("Arial", 12, FontStyle.Regular, GraphicsUnit.Pixel)

                        g.DrawString(.GetText, f, Brushes.Black, 10, 10)

                    Case .ContainsData(DataFormats.FileDrop)

                        Dim dateien() As String = CType(.GetData(DataFormats.FileDrop), String())

                        Ausgabe(dateien)


                End Select

            End With

        End If

    End Sub

    Sub clipformarteeinfgen(ByVal pea As PaintEventArgs)

        Dim s As String = ""

        Dim formate() As String

        formate = My.Computer.Clipboard.GetDataObject.GetFormats()

        s = ""

        For Each sf As String In formate

            s &= sf & vbCrLf

        Next

        's &=mloc.x &"," mloc.y -'Zur Kontrolle der Mausposition 

        If s.Length Then


        End If

        Dim f As New Font("Courier New", 12, FontStyle.Regular)

        pea.Graphics.Clear(Color.White)

        pea.Graphics.DrawString(s, f, Brushes.Brown, CSng(ptmaus.X), CSng(ptmaus.Y))

    End Sub


    Private Sub frmBetrachter_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

     End Sub

End Class


Link zu diesem Kommentar
Auf anderen Seiten teilen

  1. Die AllowDrop Property deiner ListBox o.ä. muss auf true gesetzt sein.
  2. In deiner DragEnter muß ein DragDropEffect gesetzt werden ( z.B. e.Effect = DragDropEffects.All ), sonst bleibt immer das Verbotsschild da. Die DragDrop feuert ja erst beim loslassen des Mausbuttons, da ist das setzen des Effects also relativ sinnfrei.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...