2016-06-02 23 views
0

Ich arbeite in VS2013 mit der OpenFileDialog von einem Modul und es funktioniert gut einmal. Wenn der Benutzer es öffnet sich wieder wird dieser Fehler angezeigt:OpenFileDialog unbehandelt Ausnahme

"ArgumentException was unhandled

An unhandled exception of type 'System.ArgumentException' occurred in System.Windows.Forms.dll

Additional information: Positive length is expected"

Mein Code:

Dim fd As OpenFileDialog = New OpenFileDialog() 
Try 
    With fd 
     .Title = "Select File Dialog" 
     .InitialDirectory = str_PathFileName 
     .FileName = Path.GetFileName(str_PathFileName) 
     .Filter = "All files (*.*)|*.*" 
     .Multiselect = False 
     .RestoreDirectory = True 
     If (.ShowDialog() = DialogResult.OK) Then 
     ... 

Der Fehler tritt auf der ShowDialog Linie. Was vermisse ich?

+0

Was ist der Wert von 'str_PathFileName', wenn er abstürzt? Es kann auch mehr Informationen in den Details des Ausnahmedialogs geben – Plutonix

+0

eine Verfüllung von OpenFiledialog nach showdialog gibt zurück – kunal

+0

Hinzufügen fd.Dispose() hatte keine Wirkung – Terabithia

Antwort

0

Ihr Variablenname str_PathFileName ist möglicherweise leer. Check ist dein Weg gut.

  Dim fd As OpenFileDialog = New OpenFileDialog() 
      Dim str_PathFileName As String = "C:\" 'put your valid path 

      With fd 
        .Title = "Select File Dialog" 
        .InitialDirectory = str_PathFileName 
        .FileName = IO.Path.GetFileName(str_PathFileName) 
        .Filter = "All files (*.*)|*.*" 
        .Multiselect = False 
        .RestoreDirectory = True 
        If (.ShowDialog() = DialogResult.OK) Then 

        End If 

       End With 

sollte dies in einem einfachen Unter für mich vorbei

+0

Ich bekomme den gleichen Fehler – Terabithia

+1

'Ihr Variablenname str_PathFileName könnte leer sein' das sollte ein Kommentar gewesen sein, keine Antwort, da der Code, den Sie gepostet haben, der gleiche war und keine Unterschiede ansprach.Daher ist der Code nicht relativ überhaupt an diesem Punkt. – Codexer

+0

@Terabithia Vielleicht wird Ihr Pfad beim Öffnen zum zweiten Mal gelöscht. Verwenden Sie debug, um den Pfad beim zweiten Versuch zu prüfen. – Dejan

0

Ihr Code funktioniert gut() mit Ihrem Code nur in ihm - versuchen, Ihren Code auf eine Schaltfläche klicken Ereignis zu bewegen und sehen, ob es Stall ausfällt.

Hier ist eine Variante, die ein wenig die Dinge besser reinigen kann:

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click 
    Dim str_PathFileName As String = "C:\Temp" 'put your valid path 
    Using fd As New OpenFileDialog 
     With fd 
      .Title = "Select File Dialog" 
      .InitialDirectory = str_PathFileName 
      .FileName = IO.Path.GetFileName(str_PathFileName) 
      .Filter = "All files (*.*)|*.*" 
      .Multiselect = False 
      .RestoreDirectory = True 
      Dim result As DialogResult = .ShowDialog 
      MsgBox(result.ToString) 
     End With 
    End Using 
End Sub 
+0

Leider in dieser Anwendung gibt es keine Schaltfläche zu verwenden, der OpenFileDialog wird von der Anwendung gestartet, nicht der Benutzer. – Terabithia

+0

Ich schlug den Button_Click als eine Möglichkeit vor, den Code zu isolieren, um zu sehen, ob etwas anderes in Ihrem Programm störend ist. Erstellen Sie eine Konsolenanwendung? WinForm, WPF? ?? – rheitzman