/// 実習F1の3 ファイル処理 | プログラミング実習 |
ファイルのダイアログ ワープロなどでファイルを開くとき、ファイルやフォルダを選択することができるダイアログボックス※1(ダイアログとも略される)が開く。ダイアログにはいろいろなものが用意されているが、ここではファイルのダイアログ(OpenFileDialog、SaveFileDialog)を利用する。
ツールボックスのダイアログのグループにコントロールが用意されている。ダブルクリックで配置する。タイマーと同じようにフォームとは別の領域に表示される。
(OpenFileDialog、SaveFileDialog ⇒ OBJ と表す。)
OBJ.ShowDialogメソッド … ファイルのダイアログを開く。
OBJ.FileNameプロパティ … ファイル名の設定と取得。
OBJ.InitialDirectory … 最初に表示するフォルダの設定と取得。
OBJ.Filterプロパティ※2 … ファイルの種類の設定と取得。
OBJ.FilterIndexプロパティ※3 … ファイルの種類のインデックス値の設定と取得。既定値は1。
OBJ.Titleプロパティ … ファイルのダイアログのタイトルの設定と取得。
※1 ダイアログボックス
ユーザに何らかの入力をうながすために表示されるウインドウのことである。「ダイアログ」は「対話」という意味である。
他のウインドウよりも手前にポップアップ表示され、テキストボックスやチェックボックス、ボタンなどの入力要素と、入力をうながすメッセージが表示される。
表示中はウインドウの外の操作ができなくなる「モーダルダイアログ」(modal dialog)と、他のウインドウの操作を行ってもよい「モードレスダイアログ」(modeless dialog)がある。
単純にメッセージを伝えるためだけのウインドウは「メッセージボックス」と呼ばれる。
※2 Filterプロパティ
ファイルの種類は、"A1|A2|B1|B2"のように"|"で区切って設定する。A1,B1が表示する説明で、A2,B2がフィルタとして使われる。「*」はその部分がどのような文字列でもよいという指定で、ワイルドカード※4という。
画像ファイルには拡張子が複数ある。このようなときはフィルタをセミコロン(;)で区切る。次に例を示す。
OpenFileDialog1.Filter = "画像ファイル|*.bmp;*.gif;*.jpg|すべてのファイル|*.*"
※3 FilterIndexプロパティ
Filterプロパティに"A1|A2|B1|B2"と設定したとき、AとBの2つのファイルの種類から選択することができる。ダイアログを表示したとき、2番目のBを表示させるには、FilterIndexプロパティに2を設定する。FilterIndexプロパティの設定が省略されているときは1である。
※4 ワイルドカード
ワイルドカードは任意の文字を表す特殊な文字のことで、条件に一致する複数のファイルをまとめて指定する場合に使われる。ワイルドカードには次の二つの文字が用意されている。
* 任意の長さの文字(0文字以上)
? 任意の1文字(0文字も可)
プロジェクト名 (実習F1テキストファイルの読み書き)
説明
[読み込み]、[書き込み]ボタンをクリックすると、ダイアログが開き、ファイルを選択できる。
デザイン
[追記]のチェックボックスを削除(実習F1の1と同じ)。
フォームのプロパティ Text = 実習F1テキストファイルの読み書き3
コード@(プログラム)
Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles
Me.Load
Dim nowfolder As String
nowfolder = My.Computer.FileSystem.CurrentDirectory
tbxFName.Text = nowfolder & "\テスト用ファイル.txt"
End Sub
Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles
Me.Load
Dim nowfolder As String
nowfolder = My.Computer.FileSystem.CurrentDirectory
OpenFileDialog1. @ = nowfolder ←追加
SaveFileDialog1. A = nowfolder ←追加
tbxFName.Text = nowfolder & "\テスト用ファイル.txt"
End Sub
キーワード
InitialDirectoryプロパティ … 解説参照。
コードA(プログラム)
Private Sub btnFRead_Click(sender As System.Object, e As System.EventArgs)
Handles btnFRead.Click
If My.Computer.FileSystem.FileExists(tbxFName.Text) = False Then
MessageBox.Show("ファイルがありません", "実習F1")
Else
tbxData.Text = My.Computer.FileSystem.ReadAllText(tbxFName.Text)
End If
End Sub
Private Sub btnFRead_Click(sender As System.Object, e As System.EventArgs)
Handles btnFRead.Click
Dim res As DialogResult 'ダイアログのボタン情報、受取り用
OpenFileDialog1. @ = tbxFName.Text 'ファイル名初期値設定
res = OpenFileDialog1. A 'ダイアログを開く
If res = Windows.Forms.DialogResult.OK Then '[開く]クリック
tbxFName.Text = OpenFileDialog1.FileName
tbxData.Text = My.Computer.FileSystem.ReadAllText(tbxFName.Text)
End If
End Sub
キーワード
FileNameプロパティ、ShowDialogメソッド … 解説参照。
解説
開くのダイアログでファイルの有無が検査されるので、FileExistsメソッドでの検査は不要となる。
ダイアログで[キャンセル]をクリックするとWindows.Forms.DialogResult.Cancelがresに格納される。
コードB(プログラム)
Private Sub btnFWrite_Click(sender As System.Object, e As System.EventArgs)
Handles btnFWrite.Click
If cbTsuiki.Checked = True Then ←追記 の処理は削除
My.Computer.FileSystem.WriteAllText(tbxFName.Text, tbxData.Text, True)
Else
My.Computer.FileSystem.WriteAllText(tbxFName.Text, tbxData.Text,
False)
End If
End Sub
Private Sub btnFWrite_Click(sender As System.Object, e As System.EventArgs)
Handles btnFWrite.Click
Dim res As DialogResult
SaveFileDialog1. @ = tbxFName.Text
res = SaveFileDialog1. A
If res = Windows.Forms.DialogResult. B Then
tbxFName.Text = SaveFileDialog1. C
My.Computer.FileSystem.WriteAllText(tbxFName.Text, tbxData.Text,
False)
End If
End Sub
解説
[追記]のチェックボックスは削除したので、関係する処理を削除する。
名前を付けて保存のダイアログで同じファイル名を選択すると警告のメッセージが表示される。
テスト
□ [読み込み]または[書き込み]ボタンをクリックすると、ダイアログが開き、ファイルを選択できる。
説明
ファイルのダイアログでファイルの種類が選択できるようにする。
デザイン
変更なし。
フォームのプロパティ Text = 実習F1テキストファイルの読み書き4
コード(プログラム) 変更部分のみ
Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles
Me.Load
Dim nowfolder As String
nowfolder = My.Computer.FileSystem.CurrentDirectory
OpenFileDialog1.InitialDirectory = nowfolder
SaveFileDialog1.InitialDirectory = nowfolder
tbxFName.Text = nowfolder & "\テスト用ファイル.txt"
OpenFileDialog1. @ = "テキストファイル(*.txt)|*.txt|すべてのファイル(*.*)|*.*" ←追加
SaveFileDialog1. A = "テキストファイル(*.txt)|*.txt|すべてのファイル(*.*)|*.*" ←追加
End Sub
キーワード
Filterプロパティ … 解説参照。
テスト
□ ファイルのダイアログでファイルの種類が選択できる。
/// 実習F1の3と4 ファイル処理 | Copyright©2014 Hiroshi Masuda |