none
Geöffnetes Bild löschen RRS feed

  • Frage

  • Hallo,

    ich arbeite gerade an einem PictureViewer. Ich will nun eine Funktion "Bild löschen" einfügen. Allerdings zeigt VB immer an, die Datei wird nicht gefunden.

     

     

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles deleteButton.Click
     Kill(OpenFileDialog1.FileName)
     End Sub
    

     

     

    Björn

     

    Donnerstag, 24. Juni 2010 19:10

Antworten

  • Hallo Björn,

    liefere uns bitte exakte Details zu der Exception, die Du bekommst. Die Exception enhält sehr genaue Infos zu den Gründen, warum die Datei nicht gefunden werden kann. Wenn wir die hier kennen, können wir Dir auch zielführend helfen, statt im Nebel zu stochern. Ebenso interessant wäre, wie Du das Bild anzeigst.

    In folgendem Beispiel kann der Anwender über den OpenFileDialog eine Datei zum Öffnen auswählen und diese wird dann über die ImageLocation Eigenschaft von der PictureBox geladen. Diese Eigenschaft kann auch verwendet werden, um den Pfad- und Dateinamen später beim Löschen abfragen zu können:

    Public Class Form1
    
     Private Sub btnOpen_Click(ByVal sender As System.Object, _
                  ByVal e As System.EventArgs _
                     ) Handles btnOpen.Click
    
      OpenFileDialog1.Filter = "Bilder|*.bmp;*.jpg;*.png;*.gif"
    
      If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
       PictureBox1.ImageLocation = OpenFileDialog1.FileName
      End If
     End Sub
    
     Private Sub btnDelete_Click(ByVal sender As Object, _
                   ByVal e As System.EventArgs _
                      ) Handles btnDelete.Click
    
      Try
       Dim lPath As String = PictureBox1.ImageLocation
    
       If Not String.IsNullOrEmpty(lPath) Then
        System.IO.File.Delete(PictureBox1.ImageLocation)
    
        PictureBox1.ImageLocation = Nothing
       End If
    
      Catch ex As Exception
       MsgBox(ex.Message, MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly)
    
      End Try
     End Sub
    End Class
    

    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Donnerstag, 24. Juni 2010 22:20

Alle Antworten

  • Hallo Björn,

    http://msdn.microsoft.com/de-de/library/tdx72k4b(v=VS.80).aspx

    Loschen einer Datei. Du must auch einen path setzen. Default path ist der, aus welcher die Anwendung gestartet wird.

    schöne Grüße Ellen

     


    Ich benutze/ I'm using VB2008 & VB2010
    Donnerstag, 24. Juni 2010 19:57
  • Hallo Björn,
    ich arbeite gerade an einem PictureViewer. Ich will nun eine Funktion "Bild löschen" einfügen. Allerdings zeigt VB immer an, die Datei wird nicht gefunden.

    wie wärs mit dem hier?

      http://msdn.microsoft.com/de-de/library/system.io.file.delete.aspx

    Ok, grad nachgeschaut, Kill würde also auch gehen.

    Aber eine FileNotFoundException sagt eigentlich nicht, dass die Datei geöffnet ist. Von daher würde ich mal drauf tippen, dass Du den falschen Pfad übergibst.

    Was genau steht bei dir denn in OpenFileDialog1.FileName? Ggfs. einen Leerstring?

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Donnerstag, 24. Juni 2010 19:58
    Moderator
  • Hallo Björn,

    liefere uns bitte exakte Details zu der Exception, die Du bekommst. Die Exception enhält sehr genaue Infos zu den Gründen, warum die Datei nicht gefunden werden kann. Wenn wir die hier kennen, können wir Dir auch zielführend helfen, statt im Nebel zu stochern. Ebenso interessant wäre, wie Du das Bild anzeigst.

    In folgendem Beispiel kann der Anwender über den OpenFileDialog eine Datei zum Öffnen auswählen und diese wird dann über die ImageLocation Eigenschaft von der PictureBox geladen. Diese Eigenschaft kann auch verwendet werden, um den Pfad- und Dateinamen später beim Löschen abfragen zu können:

    Public Class Form1
    
     Private Sub btnOpen_Click(ByVal sender As System.Object, _
                  ByVal e As System.EventArgs _
                     ) Handles btnOpen.Click
    
      OpenFileDialog1.Filter = "Bilder|*.bmp;*.jpg;*.png;*.gif"
    
      If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
       PictureBox1.ImageLocation = OpenFileDialog1.FileName
      End If
     End Sub
    
     Private Sub btnDelete_Click(ByVal sender As Object, _
                   ByVal e As System.EventArgs _
                      ) Handles btnDelete.Click
    
      Try
       Dim lPath As String = PictureBox1.ImageLocation
    
       If Not String.IsNullOrEmpty(lPath) Then
        System.IO.File.Delete(PictureBox1.ImageLocation)
    
        PictureBox1.ImageLocation = Nothing
       End If
    
      Catch ex As Exception
       MsgBox(ex.Message, MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly)
    
      End Try
     End Sub
    End Class
    

    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Donnerstag, 24. Juni 2010 22:20
  • Hallo Björn96,

    tausche doch einfach mal deinen Kill-Befehl gegen:

    MsgBox(OpenFileDialog1.FileName)

    was liefert dir dann die MessageBox?
    Es ist vielleicht ein sehr primitiver Ansatz mit dem ich da meine Anweisungen immer prüfe, aber grundsätzlich kannst du davon ausgehen, dass dein Kill-Befehl für eine Variable funktioniert, wenn die Variable schlüssig ist.
    Wenn du natürlich nur den Namen z.B. ohne Pfad übergibst, kann das nicht klappen. Das ist dann so als würde der Postbote an der Klingel Hauptstraß 11 läuten.

    Aber welcher Ort?


    Liebe Grüße Stefan
    Dienstag, 29. Juni 2010 14:59