Почему я должен отменить OpenFileDialog дважды, чтобы закрыть его - PullRequest
0 голосов
/ 27 августа 2018

Вот код:

  Private Sub btn_selectfile_Click(sender As Object, e As EventArgs) Handles btn_selectfile.Click
    OpenFileDialog1.FileName = ""
    OpenFileDialog1.Filter = "Text Files | *.txt"

    If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
        'some code here
    ElseIf OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then
        OpenFileDialog1.Dispose()
    End If

End Sub

Это также происходит, если я переверну их и поставлю DialogResult.OK в ElseIf при выборе файла.

Как мне действовать?Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Полагаю, когда вы отменяете диалог, вы хотите выйти из процедуры.В этом случае вам просто нужно проверить, равен ли результат Cancel:

If OpenFileDialog1.ShowDialog() = DialogResult.Cancel Then Exit Sub

После этой строки результат в порядке, так что вы можете безопасно получить путь к файлу.

0 голосов
/ 27 августа 2018

Вызовите ShowDialog один раз, сохраните результат, а затем проверьте его.В настоящее время вы звоните ShowDialog дважды, что показывает диалог пользователю дважды.

Dim result As DialogResult = OpenFileDialog1.ShowDialog();

If result = Windows.Forms.DialogResult.OK Then
    'some code here
ElseIf result = Windows.Forms.DialogResult.Cancel Then
    OpenFileDialog1.Dispose()
End If
...