OpenFileDialogを利用したファイルの読み取りが出来ません。

タグの編集
投稿者 カシミヤ  (高校生) 投稿日時 2011/11/14 13:58:49
恥ずかしながら、OpenFileDialogを使いテキストボックスにtxtファイルを読み込ませ、表示したいのですがDalogboxは開くことが出来れどテキストファイルを選択してOKを押しても何の反応もありません。

ファイルパスをあらかじめ指定したRead系メソッドならこの中学校にもサンプルコードはありますし、反応もありますが、OpenFileDialogを使ったファイルの表示するためのコードは普通に検索しても出てこず、あっても先ほど書いたようになんの反応もないのです。もしくはエラーがでる。
参考にしたコードはここから
http://dobon.net/vb/dotnet/form/openfiledialog.html

練習がはかどらず困ってます。よろしくお願いします。
投稿者 shu  (社会人) 投稿日時 2011/11/14 14:18:49
書かれたコードを載せた方が分かりやすいですよ。
投稿者 ヴァン  (社会人) 投稿日時 2011/11/14 15:07:36
「反応」とは何を期待しているのでしょうか?

OpenFileDialog はファイルを選択するだけです。
読み込むコードは自分で書く必要があります。
投稿者 カシミヤ  (高校生) 投稿日時 2011/11/14 15:38:55
コードを乗せようかと思いましたが、出力・読み込みのしかたを全くといっていいほど理解できていないため、かなり適当なものであるかつ、ほぼ先ほどのサイトのコード・ここの「ファイル処理」にあるコードを試験的にほぼコピペしたもの、かつ、「動くわけがない。」といえるほどになってると思い敢えてのせませんでした。

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim WriteStream As New StreamWriter("C:\Users\UserName\Desktop\test.txt")
        WriteStream.WriteLine(TextBox1.Text)
        WriteStream.WriteLine(TextBox2.Text)
        WriteStream.Write(TextBox3.Text)
        WriteStream.Close()
    End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        'OpenFileDialogクラスのインスタンスを作成
        Dim ofd As New OpenFileDialog()
        
        'タイトルを設定する
        ofd.Title = "開くファイルを選択してください"
        'ダイアログボックスを閉じる前に現在のディレクトリを復元するようにする
        ofd.RestoreDirectory = True

        'ダイアログを表示する
        If ofd.ShowDialog() = DialogResult.OK Then
            'OKボタンがクリックされたとき
            '選択されたファイル名を表示する
            Console.WriteLine(ofd.FileName)
        End If
        Dim stream As System.IO.Stream
        stream = ofd.OpenFile()
        If Not (stream Is Nothing) Then
            '内容を読み込み、表示する
            Dim sr As New System.IO.StreamReader(stream)
            Console.WriteLine(sr.ReadToEnd())
            '閉じる
            sr.Close()
            stream.Close()
        End If
       '読み込んだファイルを表示させたい
        Dim Reader As IO.StreamReader ←エラー・または警告が出る
        TextBox1.Text = Reader.ReadLine
        TextBox2.Text = Reader.ReadLine
    TextBox3.Text = Reader.ReadLine
        Reader.Close()

    End Sub
End Class
「ダイアログを開く」以降どうすればいいのか全く分からないため、試行錯誤の嵐で混乱しています。

ヘルプを見ても案の定理解できません。。。
投稿者 shu  (社会人) 投稿日時 2011/11/14 16:11:53
>            Dim sr As New System.IO.StreamReader(stream)
>            Console.WriteLine(sr.ReadToEnd())
>            '閉じる
>            sr.Close()
>            stream.Close()
ここでファイルを閉じてしまっています。


> Dim Reader As IO.StreamReader ←エラー・または警告が出る
Dim Reader As new IO.StreamReader(ofd.OpenFile())
または
Dim Reader As new IO.StreamReader(ofd.FileName)
投稿者 xvmmtnk  (中学生) 投稿日時 2011/11/14 23:37:58
RichTextBox なら、もっと読み込み、書き込みが簡単にできます。
投稿者 カシミヤ  (高校生) 投稿日時 2011/11/15 16:56:14
遅くなりました。ファイルの読み取りは一応出来るようになったのですが、ダイアログを開いてファイルを選択せずキャンセルすると
stream = ofd.OpenFile()
のところで例外エラーで起きてしまいます。これはどういうことなのでしょうか?重ね重ねすみません。
投稿者 shu  (社会人) 投稿日時 2011/11/15 17:25:46
>  If ofd.ShowDialog() = DialogResult.OK Then

このifブロック内で処理していないので
ファイル名指定がない状態で開こうとしているためです。
投稿者 カシミヤ  (高校生) 投稿日時 2011/11/16 15:41:10
If ofd.ShowDialog() = DialogResult.OK Then

            stream = ofd.OpenFile()
        Else
            Exit Sub
        End If
でエラーは起きなくなりました。有難うございました。