§12 ファイル処理(2)3 プログラミング実習
 back next 

【5】 ファイルのダイアログ

 ワープロや表計算などのアプリケーションでは、ファイルの読み書き時にファイル名やフォルダを選択することができるダイアログが表示される。ここでは、そのダイアログの利用について学習する。

操作 14 フォームに[開く]ボタンと[保存]ボタンを追加する。また、ファイルのダイアログを追加する。

実習12のデザイン、ボタンの追加
ボタン (Name) → LoadButton、 Text → 開 く
(Name) → SaveButton、 Text → 保 存

 ツールボックスの[ダイアログ]グループに「OpenFileDialog」と「SaveFileDialog」があるので、ダブルクリックして、配置する。

 [開く]ボタンと[保存]ボタンで、ファイルを選択するダイアログを表示して、ファイルの読み書きの処理をする。ファイルの読み書きの処理はすでに作成済みだが、次に、ボタンのイベントに対応するメソッドからも呼び出せるようにメソッドを作り替える。

操作 15 読み込み処理(Form_Loadメソッド)を別のメソッドDataLoadとして作成する。

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        hsbRed.Maximum = 255 + hsbRed.LargeChange - 1    '最大値の設定
        hsbGreen.Maximum = 255 + hsbGreen.LargeChange - 1
        hsbBlue.Maximum = 255 + hsbBlue.LargeChange - 1
        Try    '↓ファイル(読み込み用)を開く
            Dim rf As New IO.StreamReader("color.txt")
            hsbRed.Value = rf.ReadLine    'データ読み込み
            hsbGreen.Value = rf.ReadLine
            hsbBlue.Value = rf.ReadLine
            rf.Close()        'ファイルを閉じる
        Catch ex As Exception
            hsbRed.Value = 0
            hsbGreen.Value = 0
            hsbBlue.Value = 0
        End Try
        DataLoad("color.txt")    '←追加
        ColorDisp()
    End Sub

↓削除した部分をDataLoadメソッドとして作成する。↓

    Private Sub DataLoad(ByVal fname As String)
        Try    '↓ファイル(読み込み用)を開く
            Dim rf As New IO.StreamReader("color.txt")
            hsbRed.Value = rf.ReadLine    'データ読み込み
            hsbGreen.Value = rf.ReadLine
            hsbBlue.Value = rf.ReadLine
            rf.Close()        'ファイルを閉じる
        Catch ex As Exception
            hsbRed.Value = 0
            hsbGreen.Value = 0
            hsbBlue.Value = 0
        End Try
        Me.Text = "ファイル処理2-" & fname    '←追加
    End Sub

操作 16 書き込み処理(Form1_FormClosingメソッド)を別のメソッドSaveLoadとして作成する。

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Dim wf As New IO.StreamWriter("color.txt")    'ファイル(書き込み用)を開く
        wf.WriteLine(hsbRed.Value)    'データ書き込み
        wf.WriteLine(hsbGreen.Value)
        wf.WriteLine(hsbBlue.Value)
        wf.Close()    'ファイルを閉じる
        DataSave("color.txt")    '←追加
    End Sub

↓削除した部分をDataSaveメソッドとして作成する。↓

    Private Sub DataSave(ByVal fname As String)
        Dim wf As New IO.StreamWriter("color.txt")    'ファイル(書き込み用)を開く
        wf.WriteLine(hsbRed.Value)    'データ書き込み
        wf.WriteLine(hsbGreen.Value)
        wf.WriteLine(hsbBlue.Value)
        wf.Close()    'ファイルを閉じる
    End Sub

操作 17 [開く]ボタンのクリックイベントに対応するメソッドを次のように作成する。

    Private Sub LoadButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LoadButton.Click
        OpenFileDialog1.ShowDialog()    'ダイアログの表示
        If OpenFileDialog1.FileName <> "" Then
            DataLoad(OpenFileDialog1.FileName)
            ColorDisp()
        End If
    End Sub

 OpenFileDialog オブジェクトのShowDialogメソッドで「開く」のダイアログを表示する。このダイアログで選択したファイル名は、FileNameプロパティで参照できる。[キャンセル]ボタンをクリックするとFileNameプロパティの値は空("")である。

操作 18 [保存]ボタンのクリックイベントに対応するメソッドを次のように作成する。

    Private Sub SaveButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveButton.Click
        SaveFileDialog1.ShowDialog()    'ダイアログの表示
        If SaveFileDialog1.FileName <> "" Then
            DataSave(SaveFileDialog1.FileName)
        End If
    End Sub

 SaveFileDialog オブジェクトのShowDialogメソッドで「名前を付けて保存」のダイアログを表示する。このダイアログで選択したファイル名は、FileNameプロパティで参照できる。[キャンセル]ボタンをクリックするとFileNameプロパティの値は空("")である。
結果 [開く]または[保存]のボタンをクリックするとファイルを選択するダイアログが表示される。起動時と終了時のファイル処理はそのままである。
問題点→  このプログラムの起動時には、このプログラムが保存されているフォルダのファイルcolor.txtが読み込まれる。[開く]ボタンまたは[保存]ボタンでファイルの場所(フォルダ)を変更すると、終了時に保存するファイルcolor.txtが、その変更した場所に保存される。したがって、終了時に保存した色情報は次回起動時に反映されない(color.txtが読み込まれない)ことになる。


 back next 
 §12 ファイル処理(2)3 Copyright©2008 Hiroshi Masuda 

 

 

inserted by FC2 system