Hallo, folgendes Problem besteht.
Ich habe ein formular, bei dem ich verschiedene Dateiformate vom Explorer aus her schieben kann.
Das funktioniert auch. wie schaffe ich es, das der DropVorgang erst durchgeführt wird wenn ich die linke Maustaste loslasse?
Danke für eure Hilfe. Hier ist der Code:
Ich habe ein formular, bei dem ich verschiedene Dateiformate vom Explorer aus her schieben kann.
Das funktioniert auch. wie schaffe ich es, das der DropVorgang erst durchgeführt wird wenn ich die linke Maustaste loslasse?
Danke für eure Hilfe. Hier ist der Code:
VB.NET-Quellcode
- Imports System.IO
- Imports System.Windows.Forms
- Public Class frmBetrachter
- #Region "DragDrop"Private Sub frmBetrachter_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragEnter
- e.Effect = DragDropEffects.CopyDim Dateien() As String = CType(e.Data.GetData(DataFormats.FileDrop), String())
- End Sub
- #End RegionSub Ausgabe(ByVal Dateien() As String)
- Dim puffer(0) As ByteDim g As Graphics = Me.CreateGraphics
- Dim s As String = ""
- 'PICS aus dem Explorer anzeigen
- If Dateien.GetUpperBound(0) = 0 ThenDim 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") ThenDim imgbild As Image = Image.FromStream(fs)
- g.Clear(Color.Black)
- g.DrawImage(imgbild, 10, 10)
- 'Musik aus der AblageElseIf fs.Name.EndsWith("wav") _
- OrElse fs.Name.EndsWith("mp3") ThenMy.Computer.Audio.Play(fs.Name, AudioPlayMode.Background)
- End IfMe.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 SubDim ptmaus As Point
- Private Sub frmBetrachter_Invalidated(ByVal sender As Object, ByVal e As System.Windows.Forms.InvalidateEventArgs) Handles Me.Invalidated
- End SubPrivate 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 ThenDim meinpea As New PaintEventArgs(Me.CreateGraphics, Me.ClientRectangle)
- clipformarteeinfgen(meinpea)
- End If
- End SubPrivate Sub frmBetrachter_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
- ptmaus = e.Location
- End SubPrivate Sub tsiFormateAnzeigen_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles tsiFormateAnzeigen.ClickDim meinpea As New PaintEventArgs(Me.CreateGraphics, Me.ClientRectangle)
- clipformarteeinfgen(meinpea)
- End SubPrivate Sub tsiEinfgen_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles tsiEinfgen.Click
- End SubPrivate 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 TrueCase .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 SubSub clipformarteeinfgen(ByVal pea As PaintEventArgs)
- Dim s As String = ""
- Dim formate() As Stringformate = 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 ThenDim 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 IfEnd Sub
- End Class