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 | 境界線の内外がくぼんだ状態となる。 |
Flat | 3Dスタイルは適用されない。 |
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の違いは微妙ですね・・・
Update 25/Mar/2007 By Y.Kumei