/// 実習F1の3 ファイル処理 プログラミング実習
 back next 
ファイルのダイアログ
 ワープロなどでファイルを開くとき、ファイルやフォルダを選択することができるダイアログボックス※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

解答欄(英数字は半角で入力すること。余分な空白は入れないこと)
  @   A
   解答を入力し、[解答チェック]ボタンをクリックする。正解は   、不正解は   で表示される。

キーワード

 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

解答欄(英数字は半角で入力すること。余分な空白は入れないこと)
  @   A
   解答を入力し、[解答チェック]ボタンをクリックする。正解は   、不正解は   で表示される。

キーワード

 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

解答欄(英数字は半角で入力すること。余分な空白は入れないこと)
  @   A   B   C
   解答を入力し、[解答チェック]ボタンをクリックする。正解は   、不正解は   で表示される。

解説

 [追記]のチェックボックスは削除したので、関係する処理を削除する。
 名前を付けて保存のダイアログで同じファイル名を選択すると警告のメッセージが表示される。

テスト

□ [読み込み]または[書き込み]ボタンをクリックすると、ダイアログが開き、ファイルを選択できる。

 


 

説明

 ファイルのダイアログでファイルの種類が選択できるようにする。

デザイン

 変更なし。
 フォームのプロパティ  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

解答欄(英数字は半角で入力すること。余分な空白は入れないこと)
  @   A
   解答を入力し、[解答チェック]ボタンをクリックする。正解は   、不正解は   で表示される。

キーワード

 Filterプロパティ … 解説参照。

テスト

□ ファイルのダイアログでファイルの種類が選択できる。


 back next 
/// 実習F1の3と4 ファイル処理 Copyright©2014 Hiroshi Masuda 

 

 

inserted by FC2 system