0

次のコードがあります。

 Imports System.IO

Public Class Form2
Dim fileName As String = "C:\Users\Sam\Desktop\Visual Basic\Test\test.txt"
Dim pathname As String = "C:\Users\Sam\Desktop\Visual Basic\Test\test.txt"
Dim result As String

Private Sub btnBrowse_Click(sender As Object, e As EventArgs) Handles btnBrowse.Click
    fdTxtFile.InitialDirectory = "C:\Users\Sam\Desktop\Visual Basic\Test"

    fdTxtFile.ShowDialog()
    ' fdTxtFile.
End Sub


Private Sub fdTxtFile_FileOk(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles fdTxtFile.FileOk
    Dim strm As System.IO.Stream
    result = Path.GetFullPath(fdTxtFile.ToString)
    tbFileLocation.Text = result
    strm = fdTxtFile.OpenFile()

    ' tbFileLocation.Text = 
End Sub
End Class

ただし、Path.GetFullPath() を使用すると、ファイル ダイアログが開き、ファイルを選択しても [OK] ボタンはエラーなしで何もしません。選択したファイルの完全なファイルパスをテキストボックスに表示するようにしようとしていますが、これは私を悩ませています。GetFileName() などの他の関数は機能しますが、[OK] をクリックしても何もしません。

4

2 に答える 2

1

イベントを使用する必要はありません。呼び出しFileOkからの戻りを待ってShowDialog()、プロパティに格納されている値を読み取ることができFileNameます。ユーザーが [OK] ボタンを押すと、ShowDialog は列挙値と等しい値を返し、DialogResult.OKそこから作業できます。また、OpenFileDialog の FileName プロパティには完全なファイル名が含まれているため、GetFullPath を使用する必要はありません。

Private Sub btnBrowse_Click(sender As Object, e As EventArgs) Handles btnBrowse.Click
    fdTxtFile.InitialDirectory = "C:\Users\Sam\Desktop\Visual Basic\Test"

    If DialogResult.OK = fdTxtFile.ShowDialog() Then

        Dim strm As System.IO.Stream
        result = fdTxtFile.FileName
        tbFileLocation.Text = result
        ....
    End If
End Sub

ちなみに、GetFullPath の使い方が間違っているようです。GetFullPath には部分的なファイル名が必要であり、OpenFileDialog を文字列に変換してもファイル名は生成されません

于 2013-09-23T22:25:53.597 に答える
0

FileOkイベントがの場合、プロパティFileName を使用して選択したファイルにアクセスします。Multiselectに設定している場合は、代わりTrueに使用してください。FileNames

ファイル名には、ファイル パスと拡張子の両方が含まれます。ファイルが選択されていない場合、このメソッドは空の文字列 ("") を返します。

于 2013-09-23T22:25:18.453 に答える