ステータスバー(正確にはステータスバー・パネル)にアイコンを表示するにはどうしたらよいでしょうか。
これは、簡単です。
StatusbarクラスのIconプロパティに表示したいアイコンを指定します。テキストと同時に表示すると、テキストの左側にアイコンが表示されます。
さて、アイコンはIconクラスから作成します。
Iconクラスの継承関係は次のようになっています。
System.Object
System.MarshalByRefObject
System.Drawing.Icon
Iconクラスのコンストラクタは、オーバーロードされた9つのバージョンがあります。
ここでは、アイコンをリソースとして埋め込むので、次のバージョンを知っているだけで充分です。
public Icon ( Type type, string resource )typeは、リソースを検索するアセンブリのTypeです。
resourceは、リソース名です。
さて、アイコンをリソースとして埋め込むのは、イメージの時と同じです。
1.ソリューション・エクスプローラでプロジェクト名を右クリック 2.「追加」「新しい項目」で、追加したいアイコンを選択 3.追加したアイコンを右クリックして、「プロパティ」を選択 4.ビルドアクションを「埋め込まれたリソース」にします。たったこれだけです。
リソース名は、「名前空間名.アイコンのファイル名」となります。デフォルトでは名前空間名はプロジェクト名と同じになります。
これで、アイコンオブジェクトを作成できるようになりました。次のような感じで使います。
Icon icon = new Icon(GetType(), "status04.icon1.ico");これは、status04名前空間のicon1.icoアイコンのオブジェクトを生成しています。
Iconクラスの便利なメソッドにToBitmapメソッドがあります。その名の通り、アイコンをBitmapに変換してくれます。
public Bitmap ToBitmap ()では、簡単なサンプルを見てみましょう。
// status04.cs
using System;
using System.Drawing;
using System.Windows.Forms;
class status04 : Form
{
StatusBar sb;
StatusBarPanel sbp0, sbp1, sbp2;
public static void Main()
{
status04 fm = new status04();
Application.Run(fm);
}
public status04()
{
Icon icon = new Icon(GetType(), "status04.icon1.ico");
Text = "猫でもわかるC#プログラミング";
BackColor = SystemColors.Window;
Icon = icon;
BackgroundImage = icon.ToBitmap();
sb = new StatusBar();
sb.Parent = this;
sb.ShowPanels = true;
sbp0 = new StatusBarPanel();
sbp1 = new StatusBarPanel();
sbp2 = new StatusBarPanel();
sbp0.AutoSize = StatusBarPanelAutoSize.Contents;
sbp0.Alignment = HorizontalAlignment.Center;
sbp1.AutoSize = StatusBarPanelAutoSize.Spring;
sbp1.Alignment = HorizontalAlignment.Center;
sbp2.AutoSize = StatusBarPanelAutoSize.Contents;
sbp2.Alignment = HorizontalAlignment.Center;
sbp0.Icon = icon;
sbp1.Icon = icon;
sbp2.Icon = icon;
sbp1.Text = Text;
sb.Panels.Add(sbp0);
sb.Panels.Add(sbp1);
sb.Panels.Add(sbp2);
}
}
ほとんどすべてのことは、status04クラスのコンストラクタで行ってます。sbp1には、アイコンとテキストを指定してる点に注意してください。
では、実行結果を見てみましょう。
どこも、猫だらけですね・・・
メイン・フォームのアイコンも変更されている点に注意してください。
Update 10/Feb/2007 By Y.Kumei