ファイルを選択する【C#を始めよう】

C#でプログラムを始めてみる連載の9回目です。前回の記事はコチラです。 hirocom777.hatenadiary.org

ファイルを選択できるようにする

前回はファイル読込み、書込みをするプログラムの解説をしました。

f:id:HiroCom777:20211002161019j:plain

これでファイル読込み、書込みができるようになった訳ですが、アクセスできるのはコードに書いてあるファイル名のみです。今回はファイルを選択できるようにしてみたいと思います。

コモンダイアログを使う

ファイルを選択できるようにするためにコモンダイアログを使用します。コモンダイアログとは、Windowsが提供しているファイルの選択やプリンターの設定など、よく使用するユーザーインターフェイスです。 アプリケーション(ExcelやWordなど)で、ファイルを選択するときなどに出てくるウィンドウのことです。

ファイル読込みのコードを以下の様に変更しました。

    private void mnuOpen_Click(object sender, EventArgs e)
    {
        OpenFileDialog ofd = new OpenFileDialog();
        ofd.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
        if (ofd.ShowDialog() == DialogResult.OK)
        {
            System.IO.StreamReader sr = new System.IO.StreamReader(
                ofd.FileName);
            this.txtMain.Text = sr.ReadToEnd();
            sr.Close();
        }
    }

ファイル書込みのコードは以下の様に変更しました。

   private void mnuSave_Click(object sender, EventArgs e)
   {
       SaveFileDialog sfd = new SaveFileDialog();
       sfd.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
       if (sfd.ShowDialog() == DialogResult.OK)
       {
            System.IO.StreamWriter wr = new System.IO.StreamWriter(
                sfd.FileName);
            wr.Write(this.txtMain.Text);
            wr.Close();
       }
   }

ファイルを開くコモンダイアログにはOpenFileDialogクラス。ファイルを保存するコモンダイアログにはSaveFileDialogクラスを使います。両方とも使い方は同じなので、今回は一緒に説明します。

OpenFileDialogとSaveFileDialog

オブジェクトの作成

コモンダイアログを使用するには、OpenFileDialog(SaveFileDialog)クラスを作ってダイアログのオブジェクトを作ることで実現します。 上の例では、

OpenFileDialog オブジェクト名 = new OpenFileDialog(); 
SaveFileDialog オブジェクト名 = new SaveFileDialog(); 

拡張子フィルターの設定

続いて拡張子フィルターの設定です。ダイアログが開いたときに表示したり、保存時に自動的に自動的に付与する拡張子を設定します。

オブジェクト名.Filter = 拡張子フィルターの書式;

拡張子フィルターの書式は、テキストデータで説明の後に "|" で区切って *.拡張子 を記述します。複数を指定したい場合には、さらに "|" で区切って説明文と拡張子を指定します。

ダイアログの表示

準備が整いましたのでダイアログを表示します。以下でダイアログの表示となります。

オブジェクト名.ShowDialog();

上記を実行すると指定したダイアログが表示されます。また、操作が完了してダイアログがクローズされると結果を値で返してくれます。

今回の場合、開く(保存)ボタンが押された場合DialogResult.OK(値1)、 キャンセルボタンが押された場合DialogResult.Cancel(値2)を返します。

ファイル名の取得

上記でDialogResult.OKが返ってきた場合、ファイル名の指定に成功したということになります。この場合、

オブジェクト名.FileName

でファイル名を取得できます。以上がOpenFileDialogとSaveFileDialogの使用の流れになります。

実行してみる

それでは実行してみましょう。立ち上げてメニューのFile→Open,Saveをそれぞれ選択してみてください。以下の画面か出てきます。

ファイルを開く

f:id:HiroCom777:20211002160352j:plain

ファイルの保存

f:id:HiroCom777:20211002160408j:plain

ちゃんとファイルの読込み、書込みともちゃんと実行できます。

次回はショートカット

今回はコモンダイアログを使ってファイルの選択をしました。次回はショートカットを実装してみたいと思います。お楽しみに!! hirocom777.hatenadiary.org C#で簡単なツールを作る連載記事はコチラからどうぞ