アイコンでステータス表示 : RSSリーダを.NET Framework 2.0で作る (第13回)
今回のトピック
- 画像をフォームに表示する
- フォームの背景画像の設定
MicroRssReaderのメインフォームは、16×16の小さいフォームですが、新着がある等の状態がわかるように表示するイメージを変更するようにします。
アイコンは状態により次のように変化するようにします。
| イメージ | 状態 |
| アイドリング状態 | |
| RSSダウンロード状態 | |
| 新着状態 | |
| エラー発生状態 |
画像をイメージリストに取り込む
IconForm.csをデザイナで開いて、ツールボックスからImageListを追加します。追加したイメージリストのプロパティを表示して、Imagesコレクションをクリックして「イメージ コレクション エディタ」を表示し、”アイドル”、”ダウンロード”、”新着”、”エラー”の順に追加していきます。

これで、画像を取り込むことが出来ました。
必ずしもこの方法でなくとも画像を取り込むことが出来ます。例えば、Settingsに入れたり、埋め込みリソースにしたりする方法があります。
取り込んだ画像をフォームに表示する
フォームに画像を表示する場合、
- 背景画像にする
- OnPaintをオーバーライドして自分で描く
- イメージコントロールを配置して任せる
等の方法があります。
今回の場合、フォームのサイズと画像サイズが同じであるため、一番簡単な「背景画像にする」方法をとります。
フォーム自体がMicroRssReaderのステータス管理を意識しないようにするため、publicメソッドで外部から指定するようにします。
enumを指定できるようにすることも出来ますが、今回は個別のメソッドに分けました。
IconFormクラスに次のメソッドを追加: _iconListフィールドはImageListオブジェクトです。
#region 表示モードの変更
public void SetModeIdle()
{
BackgroundImage = _iconList.Images[0];
}
public void SetModeSync()
{
BackgroundImage = _iconList.Images[1];
}
public void SetModeNewEntry()
{
BackgroundImage = _iconList.Images[2];
}
public void SetModeError()
{
BackgroundImage = _iconList.Images[3];
}
#endregion
これで、ステータスが変化したときメインフォーム(IconForm)の表示状態を変更することが出来ます。

3 Comments
PHPプログラマーがはじめてC#をインスコしたばっかりで、とりあえずRSSリーダーでも勉強がてらと思い、Googleからたどり着きました。
いやぁ、アプリケーションプログラムなんて初めてなんで分からないことだらけですが、とっても参考になります。って、もしかしてこの回で終わりーー!?残念です(T-T)
でも、大変参考にさせていただいてます。ありがとうございます。
Posted by 生徒 at 2006年12月26日 12:06
生徒さん、はじめまして。
コメントありがとうございます。
最近ちょっと力尽きていまして、どうにも更新できずにいましたが、年が明けたら余裕がでそうな感じです。
それにしても見てくださる方がいるのが分かってうれしいです。
今後とも、宜しくお願いします。
Posted by NaggySpice at 2006年12月26日 22:16
NaggySpice様、こんにちは
C#の入門サイトは数あれど、UIや速度etcの検証も含めてきちんと書かれているところは初めて見ました。当方、その辺はテキトーだったりするもので、「やっぱそうだよね・・・。ちゃんとやんなきゃね・・・」と自省させていただきました(笑)
再開、楽しみにして気長に待ってます。それまでにはもう少しC#、勉強して出直してきます(笑)
Posted by 生徒 at 2006年12月28日 16:54