【WinForms実践】Dictionaryで作る電話帳アプリ
― 外部ファイルを安全に読み込む方法 ―
目次
■ 今回作るアプリ
今回作成するのは、
- data.txt からデータを読み込む
- 名前を ListBox に表示する
- 名前を選択すると電話番号を表示する
という電話帳アプリです。
■ フォームの基本構造
Form1 では次のような流れで処理を行います。
- Dictionary を用意する
- data.txt を読み込む
- 名前をリストに表示する
- 選択された名前に対応する電話番号を表示する
■ フィールド宣言
Dictionary<string, string> phoneBook;
Dictionary<string, string> は、
- キー(名前)
- 値(電話番号)
という対応関係を管理するために使用します。
■ コンストラクタ
public Form1()
{
InitializeComponent();
// 電話帳を初期化
this.phoneBook = new Dictionary<string, string>();
// ファイルから読み込み
ReadFromFile();
// 名前をリストに表示
foreach (KeyValuePair<string, string> data in phoneBook)
{
this.nameList.Items.Add(data.Key);
}
}
ここで、
- Dictionary の初期化
- ファイル読み込み
- ListBox への表示
を行っています。
■ ファイル読み込み処理
private void ReadFromFile()
{
using (System.IO.StreamReader file =
new System.IO.StreamReader("data.txt"))
{
while (!file.EndOfStream)
{
string line = file.ReadLine();
string[] data = line.Split(',');
this.phoneBook.Add(data[0], data[1]);
}
}
}
■ data.txt の形式
山田太郎,090-1111-1111
佐藤花子,080-2222-2222
田中一郎,070-3333-3333
1行につき
名前,電話番号
という形式になっています。
Split(’,’) によって分割しています。
■ なぜ “data.txt” で読み込めるのか?
data.txt のプロパティを
- ビルドアクション:Content
- 出力ディレクトリにコピー:常にコピーする
に設定している場合、

実行時には
bin\Debug\data.txt
にコピーされます。
プログラムも同じフォルダで実行されるため、
new StreamReader("data.txt")
で読み込むことができます。
■ 名前選択時の処理
private void NameSelected(object sender, EventArgs e)
{
string name = this.nameList.Text;
this.phoneNumber.Text = this.phoneBook[name];
}
流れは次の通りです。
- ListBox で選択された名前を取得
- Dictionary から対応する電話番号を取得
- TextBox に表示
Dictionary を使うことで、
「名前 → 電話番号」の検索が高速に行えます。
■ 重要な理解ポイント
- Dictionary は「対応関係」を扱うコレクション
- 外部ファイルは実行フォルダから読み込まれる
- Split(’,’) でデータを分割している
- ListBox と Dictionary を連携させている
■ まとめ
このアプリでは、
- コレクション(Dictionary)
- ファイル読み込み(StreamReader)
- 文字列分割(Split)
- UI連携(ListBox, TextBox)
といった重要な技術が組み合わされています。
構造を理解すると、応用範囲は大きく広がります。
訪問数 43 回, 今日の訪問数 43回


ディスカッション
コメント一覧
まだ、コメントがありません