【学習】WinFormsでテキストをファイルに保存・読み込みしてみよう(基本)

広告

これまでの学習では、

  • ボタンを押す
  • 画面に表示する

という形でプログラムを動かしてきました。

しかし、アプリにはもう一つの大切な機能があります。

データを保存する

という仕組みです。ファイルに保存すれば、アプリを終了しても内容が残ります。

今回は C# の File クラスを使って、テキストボックスに入力した内容をファイルに保存し、読み込むアプリを作ります。

今日作るもの

TextBox に文字を入力して 保存 ボタンを押すと、memo.txt に保存されます。

読み込み ボタンを押すと、保存した内容が TextBox に表示されます。


前提

TextBox(テキストボックス) を使います。まだ学習していない場合は、ツールボックスから TextBox をドラッグして配置し、Multiline を true にすると複数行入力できます。


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

Visual Studio で新しいプロジェクトを作ります。

  • テンプレート: Windows Forms アプリ (.NET Framework)
  • ソリューション名: FileSample
  • プロジェクト名: MemoBasic

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


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

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

コントロール名前
TextBoxmemoTextBox
ButtonsaveButton
ButtonloadButton

TextBox の Multiline を true にすると、複数行のメモが書けます。


Fileクラスとは

C# では System.IO の File クラスでファイルを扱います。

  • File.WriteAllText(パス, 文字列) → ファイルに保存
  • File.ReadAllText(パス) → ファイルから読み込み
  • File.Exists(パス) → ファイルが存在するか確認

ファイルの先頭に using System.IO; を追加する必要があります。


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

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


完成コード

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

namespace MemoBasic
{
    public partial class Form1 : Form
    {
        string filePath = "memo.txt";

        public Form1()
        {
            InitializeComponent();
        }

        private void saveButton_Click(object sender, EventArgs e)
        {
            File.WriteAllText(filePath, memoTextBox.Text);
            MessageBox.Show("保存しました");
        }

        private void loadButton_Click(object sender, EventArgs e)
        {
            if (File.Exists(filePath))
            {
                memoTextBox.Text = File.ReadAllText(filePath);
                MessageBox.Show("読み込みました");
            }
            else
            {
                MessageBox.Show("ファイルがありません");
            }
        }
    }
}

ファイルの保存場所

memo.txt はプログラムの実行フォルダ(通常は bin\Debug や bin\Release)に保存されます。Visual Studio で実行した場合、プロジェクトフォルダ内に作成されます。


プログラムの流れ

保存

保存ボタンを押す
        ↓
File.WriteAllText で memoTextBox.Text を memo.txt に書き込む
        ↓
「保存しました」と表示

読み込み

読み込みボタンを押す
        ↓
File.Exists で memo.txt の有無を確認
        ↓
あれば ReadAllText で読み込み、TextBox に表示
なければ「ファイルがありません」と表示

重要ポイント

File クラスは「ファイルの読み書き」 を簡単にしてくれます。

  • WriteAllText はファイルがなければ作成、あれば上書き
  • ReadAllText はファイルがなければ例外が出るので、先に File.Exists で確認する
  • using System.IO; を忘れずに

テキストの保存・読み込みは多くのアプリの基本です。


発展アイデア

ファイル操作を使うと次のようなものも作れます。

  • ダイアログで保存場所を選ぶ(SaveFileDialog)
  • ダイアログで開くファイルを選ぶ(OpenFileDialog)
  • 複数行をリストとして保存(1行1項目)
  • 設定の保存

次回はダイアログで保存・開くを作ります。

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

広告