WinFormsで作る電話帳アプリ(Listで管理する版)
Windows Forms を使うと、
簡単に デスクトップアプリケーションを作ることができます。
今回は学習用として、
電話帳アプリ
を作ります。
このチュートリアルでは
- ファイルからデータを読み込む
- Listでデータを管理する
- ListBoxで名前を表示する
- 名前を選ぶと電話番号を表示する
という流れを学びます。
目次
完成するアプリ
画面はシンプルです。
名前一覧(ListBox)
↓
名前をクリック
↓
電話番号を表示
例
田中
佐藤
鈴木
田中をクリック
090-1234-5678
電話帳データの形式
今回は テキストファイルを読み込みます。
data.txt
田中,090-1111-1111
佐藤,090-2222-2222
鈴木,090-3333-3333
名前と電話番号を
名前,電話番号
の形式で保存します。
電話帳1件を表すクラス
まず
電話帳1件
を表すクラスを作ります。
PhoneData.cs
class PhoneData
{
public string Name;
public string PhoneNumber;
}
ここでは
- Name
- PhoneNumber
の2つの情報を持たせています。
Listで電話帳を管理する
電話帳は複数のデータを持つので
Listを使います。
List<PhoneData> phoneBook;
これは
PhoneData
PhoneData
PhoneData
のように
電話帳データの集合になります。
フォームのコード
Form1.cs
(サンプルの@"….\data.txt”部分は、教科書に合わせています。”data.txt”で取得できるようにしている場合はそれに合わせてください)
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace PhoneBook
{
public partial class Form1 : Form
{
List<PhoneData> phoneBook;
public Form1()
{
InitializeComponent();
// 電話帳リストを作る
phoneBook = new List<PhoneData>();
// ファイル読み込み
ReadFromFile();
// 名前をListBoxに表示
foreach (PhoneData data in phoneBook)
{
nameList.Items.Add(data.Name);
}
}
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(',');
PhoneData phone = new PhoneData();
phone.Name = data[0];
phone.PhoneNumber = data[1];
phoneBook.Add(phone);
}
}
}
private void NameSelected(object sender, EventArgs e)
{
string name = nameList.Text;
foreach (PhoneData data in phoneBook)
{
if (data.Name == name)
{
phoneNumber.Text = data.PhoneNumber;
break;
}
}
}
}
}
ファイル読み込みの処理
string line = file.ReadLine();
1行読み込みます。
例
田中,090-1111-1111
Splitで分割
string[] data = line.Split(',');
結果
data[0] = 田中
data[1] = 090-1111-1111
クラスにデータを入れる
PhoneData phone = new PhoneData();
phone.Name = data[0];
phone.PhoneNumber = data[1];
Listに追加
phoneBook.Add(phone);
これで電話帳が増えていきます。
名前をクリックしたとき
ListBoxの選択イベントで
NameSelected
が呼ばれます。
選択された名前
string name = nameList.Text;
電話帳を検索
foreach (PhoneData data in phoneBook)
{
if (data.Name == name)
{
phoneNumber.Text = data.PhoneNumber;
}
}
一致したデータを探します。
Dictionaryとの違い
Dictionaryなら
phoneBook[name]
で取得できます。
しかし今回は
List + クラス
で作っています。
理由は
オブジェクト指向を理解するため
です。
List + クラスのメリット
電話帳は将来
名前
電話番号
住所
メール
メモ
のように増えるかもしれません。
その場合
Dictionary<string,string>
では対応できません。
しかし
class PhoneData
なら簡単に拡張できます。
まとめ
今回学んだこと
- ファイル読み込み
- Splitによる文字列分割
- Listの使い方
- クラスを使ったデータ管理
- WinFormsのイベント
小さなアプリですが、
実際のアプリ開発の基本
がたくさん含まれています。
訪問数 29 回, 今日の訪問数 3回



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