C#たんと学ぶ/わりと硬派なソフトウェア開発講座
第2-2回「デスクトップアプリケーション」
C#たんと学ぶ わりと硬派なソフトウェア開発講座(4)
データ更新通知
![]() |
さて、コマンド実行の結果、色々とデータが更新されます。
|
![]() |
えーっと、今回の15パズルの場合、どこかセルが入れ替わるわけよね。盤面の状態っていうデータが書き換わったと。
あとは、手数が増えたり、経過時間が増えたり。 あっ、経過時間は、コマンド実行の結果というか、タイマーイベントを使って毎秒更新ね。 |
![]() |
はい。そして、データ更新に伴って、GUIの画面を書き換える必要があります。
|
説明を簡素化するために、15パズルのうち、手数を表示する部分にだけ注目しましょう。
ちょっと原始的な方法ですが、開発者自身が、イベントハンドラー内で画面を書き換えるという単純な方法もあります。以下のようなコードを書くということです。
int count = 0;
var textCount = new TextBlock();
var buttonMove = new Button { Content = "移動" };
buttonMove.Click += (sender, e) =>
{
count++;
textCount.Text = count.ToString();
};
var buttonInit = new Button { Content = "初期化" };
buttonInit.Click += (sender, e) =>
{
count = 0;
textCount.Text = count.ToString();
};
「countを更新したらかならずテキストブロックの内容を書き換える」というような記述が必要になります。このやり方は、データの数や、データを表示したいGUI上の場所が増えた時に管理しきれなくなります。また、前節で説明した、「イベントハンドラー内に書くのはイベントとコマンドの対応付けだけ」という目標も達成できていません。
![]() |
そこで、データバインディング(後述)という考え方が出てきます。
|
![]() |
もっとも、扱うデータの数が少ないうちはイベントハンドラーに色々書いちゃう方が早いんだけどもねー。
|
![]() |
まあ、データの数は、機能追加してるうちに、なんか気が付きゃ増えてるものよ。
後になって、「最初からデータバインディングを使っておけば」なんてこともあるから気を付けないと。 |
この記事は参考になりましたか?
- C#たんと学ぶ/わりと硬派なソフトウェア開発講座連載記事一覧
-
- C#たんと学ぶ/わりと硬派なソフトウェア開発講座 第3回「Webアプリケーション」(前編)
- C#たんと学ぶ わりと硬派なソフトウェア開発講座 番外編「Windows Phone 7」
- C#たんと学ぶ/わりと硬派なソフトウェア開発講座 第2-2回「デスクトップアプリケーション...
- この記事の著者
-
C#たん ソフトウェア開発講座 制作委員会(シーシャープタン)
ソフトウェアに求められる要求の高度化とともに大きくなる開発者への負担を、開発ツールやフレームワーク、時には萌え力を頼りに軽減できないか考えるプロジェクト。C#たんは単なるマスコットかと思いきや、割と毒舌。自分のことは棚に上げて、「萌えればいいってもんじゃないですよ?」が信条。twitter: @cs...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア





