1

OpenFileDialog ボックスを実装しようとしていますが、キャンセルをクリックすることを選択した場合を除いて正常に動作し、ファイルが見つからないというエラーが表示され、ファイルを選択しなかったために混乱します。

以下はコードです。キャンセルボタンを実装するにはどうすればよいですか?

OpenFileDialog1.InitialDirectory = "C:\"
OpenFileDialog1.FileName = "Select a Batch file..."
OpenFileDialog1.Filter = "Batch files (*.bat) | *.bat"
OpenFileDialog1.ShowDialog()

If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then
    OpenFileDialog1.Dispose()
End If

Dim R As New IO.StreamReader(OpenFileDialog1.FileName)
TextBox4.Text = R.ReadToEnd
R.Close()

Button4.Enabled = True
Button6.Enabled = True
4

5 に答える 5

2

ダイアログをキャンセルする(不十分な)処理をコメントアウトしました。次の場所に戻します。

Dim openFileDialog1 As New OpenFileDialog()
openFileDialog1.Filter = "Batch files (*.bat)|*.bat|All files|*.*"
Dim result = openFileDialog1.ShowDialog()

If result = DialogResult.Cancel Then
    Return ' Just leave the method
End If

' … rest of method

適切な変数名についても考える必要があります。OpenFileDialog1TextBox3および決して適切な名前でButton2はありません。優れた識別子は、コードの可読性を大幅に向上させます。

于 2013-03-08T15:00:57.077 に答える
2

どちらの場合でも、ダイアログはそれ自体を処理します。ユーザーが意図したアクションをキャンセルした場合、何もしません。これはそれを行う必要があります:

OpenFileDialog1.InitialDirectory = "C:\"
OpenFileDialog1.FileName = "Select a Batch file..."
OpenFileDialog1.Filter = "Batch files (*.bat) | *.bat"
OpenFileDialog1.ShowDialog()

If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then

   Dim R As New IO.StreamReader(OpenFileDialog1.FileName)
   TextBox4.Text = R.ReadToEnd
   R.Close()

   Button4.Enabled = True
   Button6.Enabled = True   

End If

もちろん、エラー処理を追加する必要がありますが、それは別の話です。

于 2013-03-08T15:07:03.607 に答える
0
        Dim result = OpenFileDialog1.ShowDialog()

    If result = True Then
        Dim R As New IO.StreamReader(OpenFileDialog1.FileName)
        TextBox4.Text = R.ReadToEnd
       R.Close()

    Button4.Enabled = True
    Button6.Enabled = True
    else
        ' handle the error, e.g. msgbox (no vaild file chosen"
     End If
于 2013-03-08T14:51:00.067 に答える