§12 ファイル処理(2)3 | プログラミング実習 |
【5】 ファイルのダイアログ
ワープロや表計算などのアプリケーションでは、ファイルの読み書き時にファイル名やフォルダを選択することができるダイアログが表示される。ここでは、そのダイアログの利用について学習する。
操作 14 フォームに[開く]ボタンと[保存]ボタンを追加する。また、ファイルのダイアログを追加する。
ボタン (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が読み込まれない)ことになる。
§12 ファイル処理(2)3 | Copyright©2008 Hiroshi Masuda |