第55章 ステータスバーにアイコンを付ける


ステータスバー(正確にはステータスバー・パネル)にアイコンを表示するにはどうしたらよいでしょうか。



これは、簡単です。

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には、アイコンとテキストを指定してる点に注意してください。

では、実行結果を見てみましょう。

どこも、猫だらけですね・・・

メイン・フォームのアイコンも変更されている点に注意してください。




[C# フォーム Index] [C# コンソール Index] [総合Index] [Previous Chapter] [Next Chapter]

Update 10/Feb/2007 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。