Drag'nDrop Event File not Found

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Drag'nDrop Event File not Found

    Guten Morgen zusammen,

    ich möchte eine ".log" Datei in meine From ziehen und diese dann einlesen.


    Hier mein Code:

    VB.NET-Quellcode

    1. Private Sub Form1_DragDrop(sender As Object, e As DragEventArgs) Handles Me.DragDrop
    2. Dim filenames As String
    3. Dim strFile As String
    4. If e.Data.GetDataPresent(DataFormats.FileDrop) Then
    5. strFile = filenames(0)
    6. filenames = e.Data.GetDataPresent(DataFormats.FileDrop)
    7. Try
    8. Dim i As Integer = 0
    9. Dim c = File.ReadAllText(strFile, System.Text.Encoding.Latin1)
    10. contents = c.Split(vbCrLf)
    11. For Each t As String In contents
    12. Dim z As New Zeile
    13. z.num = i
    14. z.text = contents(i)
    15. KompletteDatei.Add(z)
    16. i += 1
    17. Next
    18. Catch ex As Exception
    19. MessageBox.Show(ex.Message)
    20. End Try
    21. End If
    22. End Sub


    Das AllowDrop ist bereits auf True gesetzt.

    Wo mache ich meinen Fehler?
    Grüße SaMsOn

    !!!!!!
    Fehler gefunden!
    Ich habe vergessen die Variable "filenames" als "filenames()" zu schreiben. Der Zweite Fehler ist durch die Automation von VB passiert. Es sollte nicht "e.Data.GetDataPresent(DataFormats.FileDrop)" sondern nur "e.Data.GetData(DataFormats.FileDrop)" heißen.

    Für alle die sowas mal brauchen, hier der funktionierende Code...
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Form1_DragDrop(sender As Object, e As DragEventArgs) Handles Me.DragDrop
    2. Dim filenames() As String
    3. Dim strFile As String
    4. If e.Data.GetDataPresent(DataFormats.FileDrop) Then
    5. filenames = e.Data.GetData(DataFormats.FileDrop)
    6. strFile = filenames(0)
    7. Try
    8. Dim i As Integer = 0
    9. Dim c = File.ReadAllText(strFile, System.Text.Encoding.Latin1)
    10. contents = c.Split(vbCrLf)
    11. For Each t As String In contents
    12. Dim z As New Zeile
    13. z.num = i
    14. z.text = contents(i)
    15. KompletteDatei.Add(z)
    16. i += 1
    17. Next
    18. FiltereArztzeilen()
    19. 'aListe...
    20. bListe = EntferneDubletten(aListe)
    21. 'bListe
    22. ExtrahiereLANR()
    23. 'cListe
    24. dListe = EntferneDubletten(cListe)
    25. 'dListe
    26. SchreibeErgebnis()
    27. Catch ex As Exception
    28. MessageBox.Show(ex.Message)
    29. End Try
    30. End If
    31. End Sub


    Und nicht vergessen...!

    VB.NET-Quellcode

    1. Private Sub Form1_DragEnter(sender As Object, e As DragEventArgs) Handles Me.DragEnter
    2. e.Effect = e.AllowedEffect
    3. End Sub

    Nein! Doch! OHH!

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

    samson schrieb:

    VB.NET-Quellcode

    1. Dim c = File.ReadAllText(strFile, System.Text.Encoding.Latin1)
    Warum verwendest Du nicht die Methode .ReadAllLines()?
    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!