2016-06-02 7 views
0

Я работаю в VS2013, используя модуль OpenFileDialog, и он отлично работает один раз. Если пользователь открывает его снова отображается эта ошибка:OpenFileDialog необработанное исключение

"ArgumentException was unhandled

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

Additional information: Positive length is expected"

Мой код:

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

ошибка происходит на ShowDialog линии. Что мне не хватает?

+0

Что такое значение 'str_PathFileName', когда он выходит из строя? Там также может быть больше информации в диалоговом окне «Сведения об исключении» – Plutonix

+0

выполните удаление openfiledialog после возврата showdialog – kunal

+0

добавление fd.Dispose() не имеет эффекта – Terabithia

ответ

0

Ваше имя переменной str_PathFileName может быть пустым. Проверьте, ваш путь хорош.

  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 

Это должно пройти

+0

Я получаю ту же ошибку – Terabithia

+1

'Ваше имя переменной str_PathFileName может быть пустым', это должен был быть комментарий, а не ответ, поскольку код, который вы опубликовали, был таким же и не затрагивал никаких различий. Поэтому код не является относительно вообще в этой точке. – Codexer

+0

@Terabithia Возможно, ваш путь удаляется во второй раз при открытии. Используйте debug для проверки пути при второй попытке. – Dejan

0

Ваш код отлично работает для меня в простой Sub() с помощью только кода в нем - попробуйте переместить свой код на событие нажатия кнопки и посмотреть, если это не удается стойло.

Вот вариант, который может очистить вещи немного лучше:

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

К сожалению, в этом приложении нет кнопки для использования, OpenFileDialog запускается приложением, а не пользователем. – Terabithia

+0

Я предлагал Button_Click как способ изолировать код, чтобы увидеть, вмешивается ли что-то в вашей программе. Вы создаете консольное приложение? WinForm, WPF? ?? – rheitzman

Смежные вопросы