【学習】WinFormsでテキストをファイルに保存・読み込みしてみよう — ダイアログで保存・開く

広告

Windows Forms アプリでは SaveFileDialog と OpenFileDialog を使うことで、

  • 保存場所をユーザーが選べる
  • 開くファイルをユーザーが選べる
  • メモ帳のような「名前を付けて保存」「開く」が作れる

といった、実用的なファイル操作ができます。

基本の保存・読み込みでは固定のファイル名(memo.txt)でした。今回はダイアログで保存先や開くファイルを選べるようにします。

今日作るもの

保存 ボタンを押すと「名前を付けて保存」ダイアログが開き、好きな場所に好きな名前で保存できます。

開く ボタンを押すと「ファイルを開く」ダイアログが開き、選んだテキストファイルの内容が TextBox に表示されます。


ソリューションとプロジェクトを作る

基本の保存・読み込みのチュートリアルで作成した FileSample ソリューションに、新しいプロジェクトを追加します。

  • ソリューションエクスプローラーでソリューションを右クリック → 追加 → 新しいプロジェクト
  • テンプレート: Windows Forms アプリ (.NET Framework)
  • プロジェクト名: MemoDialog

作成すると Form1 が表示されます。


フォームに配置するコントロール

フォームに次のものを配置します。

コントロール名前
TextBoxmemoTextBox
ButtonsaveButton
ButtonopenButton

TextBox の Multiline を true にします。


SaveFileDialogとは

SaveFileDialog は「名前を付けて保存」のダイアログを表示します。

  • ShowDialog() でダイアログを表示
  • ユーザーが OK を押すと DialogResult.OK が返る
  • FileName プロパティに、ユーザーが選んだ保存先のパスが入る

OpenFileDialogとは

OpenFileDialog は「ファイルを開く」のダイアログを表示します。

  • ShowDialog() でダイアログを表示
  • ユーザーが OK を押すと DialogResult.OK が返る
  • FileName プロパティに、ユーザーが選んだファイルのパスが入る

Filterプロパティ

ダイアログで表示するファイルの種類を絞れます。

saveDialog.Filter = "テキストファイル|*.txt|すべてのファイル|*.*";

「テキストファイル|*.txt」は「表示名|拡張子」の形式です。


ボタンのイベントを登録する

saveButton と openButton をそれぞれダブルクリックして、イベントを作成します。


完成コード

using System;
using System.IO;
using System.Windows.Forms;

namespace MemoDialog
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void saveButton_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveDialog = new SaveFileDialog();
            saveDialog.Filter = "テキストファイル|*.txt|すべてのファイル|*.*";
            saveDialog.Title = "名前を付けて保存";

            if (saveDialog.ShowDialog() == DialogResult.OK)
            {
                File.WriteAllText(saveDialog.FileName, memoTextBox.Text);
                MessageBox.Show("保存しました");
            }
        }

        private void openButton_Click(object sender, EventArgs e)
        {
            OpenFileDialog openDialog = new OpenFileDialog();
            openDialog.Filter = "テキストファイル|*.txt|すべてのファイル|*.*";
            openDialog.Title = "開く";

            if (openDialog.ShowDialog() == DialogResult.OK)
            {
                memoTextBox.Text = File.ReadAllText(openDialog.FileName);
                MessageBox.Show("読み込みました");
            }
        }
    }
}

プログラムの流れ

保存

保存ボタンを押す
        ↓
SaveFileDialog を表示
        ↓
ユーザーが場所とファイル名を選んで OK
        ↓
File.WriteAllText で保存

開く

開くボタンを押す
        ↓
OpenFileDialog を表示
        ↓
ユーザーがファイルを選んで OK
        ↓
File.ReadAllText で読み込み、TextBox に表示

重要ポイント

ダイアログは「ユーザーに選んでもらう」 ための仕組みです。

  • ShowDialog() はダイアログを表示し、ユーザーの操作を待つ
  • OK を押したときだけ DialogResult.OK になる(キャンセルなら保存・読み込みしない)
  • FileName にユーザーが選んだパスが入る

これでメモ帳のようなアプリの基本が完成します。


発展アイデア

ダイアログを使うと次のようなものも作れます。

  • 初期のファイル名を設定する(FileName = "無題.txt"
  • 前回開いたフォルダを覚えておく
  • 複数ファイルを選択する(Multiselect = true
  • 画像ファイル用のフィルター(*.jpg|*.png

ファイル操作とダイアログは実用的なアプリに欠かせない要素です。

訪問数 1 回, 今日の訪問数 1回

広告