第58章 StatusStripクラスを使ってみる


C#2.0では、StatusBarクラスの機能が拡張されたStatusStripクラスを使うことができます。もちろんStatusBarクラスを使ってもかまいません。



StatusStripクラスの継承関係は次のようになっています。

System.Object 
   System.MarshalByRefObject 
     System.ComponentModel.Component 
       System.Windows.Forms.Control 
         System.Windows.Forms.ScrollableControl 
           System.Windows.Forms.ToolStrip 
            System.Windows.Forms.StatusStrip
このクラスのオブジェクトを作成して、Parentプロパティに親のFormを指定します。

StatusBarクラスで作った、ステータスバーには、通常StatusBarPanelを載せましたが、このStatusBarParnelに相当するクラスが、ToolStripStatusLabelクラスになります。これも、C#2.0以降でないと使えません。

ToolStripStatusLabelクラスの継承関係は、次のようになっています。

System.Object 
   System.MarshalByRefObject 
     System.ComponentModel.Component 
       System.Windows.Forms.ToolStripItem 
         System.Windows.Forms.ToolStripLabel 
          System.Windows.Forms.ToolStripStatusLabel
このクラスで、よく使うプロパティは次のようなものがあります。

プロパティ意味
BorderSidesどの側に境界線を表示するかを取得・設定。ToolStripStatusLabelBorderSides列挙体で指定する。
BorderStyle境界線スタイルの取得・設定。Border3DStyle列挙体で指定する。
BackColor背景色の取得・設定。
Text項目に表示されるテキストの取得・設定。

さて、ToolStripStatusLabelBorderSides列挙体のメンバと意味は次の通りです。

メンバ意味
Allラベルのすべての側に境界線を付ける。
Bottom下側のみに境界線を付ける。
Left左側のみに境界線を付ける。
None境界線を付けない。
Right右側のみに境界線を付ける。
Top上側のみに境界線を付ける。

メンバ値は、ビットごとの組み合わせが可能です。

Border3DStyle列挙体のメンバと意味は、次の通りです。

メンバ意味
Adjust境界線は指定した四角形の外側に描画される。
Bump境界線の内側と外側が浮き出している。
Etched境界線の内外がくぼんだ状態となる。
Flat3Dスタイルは適用されない。
Raised境界線の内外縁で浮き出す。
RaisedInner境界線の内側だけが浮き出す。
RaisedOuter境界線の外側だけが浮き出す。
Sunken境界線の内外がくぼんで表示。
SunkenInner境界線の内縁のみくぼんで表示。
SunkenOuter境界線の外側のみがくぼんで表示。

ToolStripStatusLabelオブジェクトをステータスバーに載せるには、ToolStrip.Items.Addメソッドを利用します。もしくは、AddRangeメソッドを利用します。Itemsプロパティは、ToolStripItemCollection型です。

では、サンプルを見てみましょう。

// statusstrip01.cs

using System;
using System.Drawing;
using System.Windows.Forms;

class statusstrip01 : Form
{
    StatusStrip ss;

    public static void Main()
    {
        Application.Run(new statusstrip01());
    }

    public statusstrip01()
    {
        Text = "猫でもわかるC#プログラミング";
        BackColor = SystemColors.Window;

        ss = new StatusStrip();
        ss.Parent = this;

        ToolStripStatusLabel tssl0 = new ToolStripStatusLabel();
        tssl0.BorderSides = ToolStripStatusLabelBorderSides.All;
        tssl0.BorderStyle = Border3DStyle.Bump;
        tssl0.BackColor = SystemColors.Control;
        tssl0.Text = "Bump";

        ToolStripStatusLabel tssl1 = new ToolStripStatusLabel();
        tssl1.BorderSides = ToolStripStatusLabelBorderSides.All;
        tssl1.BorderStyle = Border3DStyle.Raised;
        tssl1.BackColor = SystemColors.Control;
        tssl1.Text = "Raised";

        ToolStripStatusLabel tssl2 = new ToolStripStatusLabel();
        tssl2.BorderSides = ToolStripStatusLabelBorderSides.All;
        tssl2.BorderStyle = Border3DStyle.Sunken;
        tssl2.BackColor = SystemColors.Control;
        tssl2.Text = "Sunken";

        ToolStripStatusLabel tssl3 = new ToolStripStatusLabel();
        tssl3.BorderSides = ToolStripStatusLabelBorderSides.All;
        tssl3.BorderStyle = Border3DStyle.SunkenInner;
        tssl3.BackColor = SystemColors.Control;
        tssl3.Text = "SunkenInner";

        ToolStripStatusLabel tssl4 = new ToolStripStatusLabel();
        tssl4.BorderSides = ToolStripStatusLabelBorderSides.All;
        tssl4.BorderStyle = Border3DStyle.SunkenOuter;
        tssl4.BackColor = SystemColors.Control;
        tssl4.Text = "SunkenOuter";

        ToolStripStatusLabel[] ts = { tssl0, tssl1, tssl2, tssl3, tssl4 };
        ss.Items.AddRange(ts);
    }
}
実行結果は、次のようになります。

XXInnerとか、XXOuterの違いは微妙ですね・・・




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

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