ステータスバー(正確にはステータスバー・パネル)にアイコンを表示するにはどうしたらよいでしょうか。
これは、簡単です。
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