2016-06-02 3 views
0

Je travaille dans VS2013 en utilisant le OpenFileDialog à partir d'un module et il fonctionne très bien une fois. Si l'utilisateur ouvre à nouveau cette erreur apparaît:OpenFileDialog exception non gérée

"ArgumentException was unhandled

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

Additional information: Positive length is expected"

Mon 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 
     ... 

L'erreur se produit sur la ligne ShowDialog. Qu'est-ce que je rate?

+0

Quelle est la valeur de 'str_PathFileName' quand il tombe en panne? Il pourrait également être plus d'informations dans les détails de l'exception de dialogue – Plutonix

+0

faire Éliminez OpenFileDialog après le retour showDialog – kunal

+0

ajoutant fd.Dispose() n'a eu aucun effet sur – Terabithia

Répondre

0

Le nom de votre variable str_PathFileName est peut-être vide. Vérifiez votre chemin est bon.

  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 

Cela devrait passer

+0

Je reçois la même erreur – Terabithia

+1

'Votre nom de variable str_PathFileName peut être vide' cela aurait dû être un commentaire, pas une réponse car le code que vous avez posté était le même et n'a pas corrigé les différences.Par conséquent, le code n'est pas relatif du tout à ce stade. – Codexer

+0

@Terabithia Peut-être que votre chemin est supprimé pour la deuxième fois lorsqu'il s'ouvre. Utilisez le débogage pour vérifier le chemin à la deuxième tentative. – Dejan

0

Votre code fonctionne bien pour moi dans un simple Sub() avec juste votre code dans ce - essayez de déplacer votre code à un bouton événement clic et voir si elle échoue stalle.

Voici une variante qui peut nettoyer les choses un peu mieux:

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

Malheureusement dans cette application il n'y a pas de bouton à utiliser, OpenFileDialog est lancé par l'application, pas par l'utilisateur. – Terabithia

+0

Je proposais le Button_Click comme moyen d'isoler le code pour voir si quelque chose d'autre dans votre programme interférerait. Êtes-vous construire une application de console? WinForm, WPF? ?? – rheitzman