経緯
C#で単語帳のようなWindowsフォームアプリケーションを作成しており、これまで.txtファイルを読み込む際にはダイアログ(OpenFileDialog)を使っていました。
しかし、フォームを開いた時点で自動的にテキストファイルを読み込んでおきたいと思い、その方法について今回学習しました。
Form1()の中に読み込み処理を書く
Windowsフォームアプリケーションでは、フォームの起動直後に処理を行いたい場合、Form1()コンストラクタの中にコードを書くことで実行が可能です。InitializeComponent()の直後に、ファイル読み込み処理を追加する形で記述します。
以下にサンプルコードを示します。
public Form1()
{
InitializeComponent();
string filePath = "単語帳.txt";
if (File.Exists(filePath))
{
string text = File.ReadAllText(filePath);
// 読み込んだテキストを使った処理をここに記述
}
else
{
MessageBox.Show("ファイルがありません。");
}
}
コードの解説
・InitializeComponent()は、フォームのコントロール(ボタンやラベルなど)を初期化する処理です。この行は必ず最初に記述されている必要があります。
・filePathでは、読み込み対象となる.txtファイルのパスを指定します。ここでは実行ファイルと同じフォルダにある「単語帳.txt」を指定しています。
・File.Exists(filePath)で、ファイルが存在するかどうかをチェックしています。
・ファイルが存在すれば、File.ReadAllText(filePath)で内容を読み取り、text変数に格納しています。
・ファイルが存在しなければ、MessageBox.Show()でエラーメッセージを表示します。
注意点
・ファイルは実行ファイル(.exe)と同じ場所に置いておく必要があります。
・ファイル名が間違っていたり、拡張子が違う場合も読み込めませんので、パス指定には注意してください。
・File.ReadAllText()は、ファイル全体を一括で読み込むため、大容量のファイルには不向きです。必要に応じてFile.ReadLines()などに切り替えることも可能です。
まとめ
フォーム起動時に自動でテキストファイルを読み込みたい場合は、Form1()の中でInitializeComponent()の直後に処理を記述することで実現可能です。
これにより、ユーザーが操作する前に必要なデータを事前に準備しておくことができます。
ダイアログを使わずにシンプルな単語帳やデータ表示アプリを作成したい場合に有効な方法です。
最後までお読みいただき、ありがとうございました。
