次の方法で共有


StatusBarDrawItemEventArgs クラス

DrawItem イベントのデータを提供します。

名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)

構文

'宣言
Public Class StatusBarDrawItemEventArgs
    Inherits DrawItemEventArgs
'使用
Dim instance As StatusBarDrawItemEventArgs
public class StatusBarDrawItemEventArgs : DrawItemEventArgs
public ref class StatusBarDrawItemEventArgs : public DrawItemEventArgs
public class StatusBarDrawItemEventArgs extends DrawItemEventArgs
public class StatusBarDrawItemEventArgs extends DrawItemEventArgs

解説

オーナー描画 StatusBarPanel の視覚的要素が変更されると DrawItem イベントが発生します。StatusBarDrawItemEventArgs は、パネルを描画するために使用する Graphics オブジェクト、パネルの描画先の Rectangle オブジェクト、パネル識別番号、パネルに関するステータス情報、および描画対象のパネルを指定します。このクラスによって提供されたデータを DrawItem イベントのイベント ハンドラで使用して、アプリケーションの StatusBar コントロール内にカスタム描画パネルを作成できます。

使用例

Style プロパティ、StatusBarDrawItemEventHandler デリゲート、StatusBarDrawItemEventArgs クラス、StatusBarPanelStyle 列挙体、および StatusBarDrawItemEventArgs.Panel プロパティの使用方法を次のコード例に示します。この例を実行するには、次のコードをフォームに貼り付けます。そして、フォームのコンストラクタまたは Load メソッドで InitializeStatusBarPanels メソッドを呼び出します。

Private StatusBar1 As StatusBar

Private Sub InitializeStatusBarPanels()
    StatusBar1 = New StatusBar

    ' Create two StatusBarPanel objects.
    Dim panel1 As New StatusBarPanel
    Dim panel2 As New StatusBarPanel

    ' Set the style of the panels.  
    ' panel1 will be owner-drawn.
    panel1.Style = StatusBarPanelStyle.OwnerDraw

    ' The panel2 object will be drawn by the operating system.
    panel2.Style = StatusBarPanelStyle.Text

    ' Set the text of both panels to the same date string.
    panel1.Text = DateTime.Today.ToShortDateString()
    panel2.Text = DateTime.Today.ToShortDateString()

    ' Add both panels to the StatusBar.
    StatusBar1.Panels.Add(panel1)
    StatusBar1.Panels.Add(panel2)

    ' Make panels visible by setting the ShowPanels 
    ' property to True.
    StatusBar1.ShowPanels = True

    ' Use the AddHandler syntax to handle the DrawItem event
    ' for the owner-drawn panel.
    AddHandler StatusBar1.DrawItem, _
        New StatusBarDrawItemEventHandler( _
        AddressOf DrawCustomStatusBarPanel)
    Me.Controls.Add(StatusBar1)
End Sub

' Draw the panel.
Private Sub DrawCustomStatusBarPanel(ByVal sender As Object, _
    ByVal e As StatusBarDrawItemEventArgs)

    ' Draw a blue background in the owner-drawn panel.
    e.Graphics.FillRectangle(Brushes.AliceBlue, e.Bounds)

    ' Create a StringFormat object to align text in the panel.
    Dim textFormat As New StringFormat

    ' Center the text in the middle of the line.
    textFormat.LineAlignment = StringAlignment.Center

    ' Align the text to the left.
    textFormat.Alignment = StringAlignment.Far

    ' Draw the panel's text in dark blue using the Panel 
    ' and Bounds properties of the StatusBarEventArgs object 
    ' and the StringFormat object.
    e.Graphics.DrawString(e.Panel.Text, StatusBar1.Font, _
          Brushes.DarkBlue, New RectangleF(e.Bounds.X, e.Bounds.Y, _
          e.Bounds.Width, e.Bounds.Height), textFormat)

End Sub
private StatusBar StatusBar1;

private void InitializeStatusBarPanels()
{
    StatusBar1 = new StatusBar();

    // Create two StatusBarPanel objects.
    StatusBarPanel panel1 = new StatusBarPanel();
    StatusBarPanel panel2 = new StatusBarPanel();

    // Set the style of the panels.  
    // panel1 will be owner-drawn.
    panel1.Style = StatusBarPanelStyle.OwnerDraw;

    // The panel2 object will be drawn by the operating system.
    panel2.Style = StatusBarPanelStyle.Text;

    // Set the text of both panels to the same date string.
    panel1.Text = System.DateTime.Today.ToShortDateString();
    panel2.Text = System.DateTime.Today.ToShortDateString();

    // Add both panels to the StatusBar.
    StatusBar1.Panels.Add(panel1);
    StatusBar1.Panels.Add(panel2);

    // Make panels visible by setting the ShowPanels 
    // property to True.
    StatusBar1.ShowPanels = true;

    // Associate the event-handling method with the DrawItem event 
    // for the owner-drawn panel.
    StatusBar1.DrawItem += 
        new StatusBarDrawItemEventHandler(DrawCustomStatusBarPanel);
        
    this.Controls.Add(StatusBar1);
}

// Draw the panel.
private void DrawCustomStatusBarPanel(object sender, 
    StatusBarDrawItemEventArgs e)
{

    // Draw a blue background in the owner-drawn panel.
    e.Graphics.FillRectangle(Brushes.AliceBlue, e.Bounds);

    // Create a StringFormat object to align text in the panel.
    StringFormat textFormat = new StringFormat();

    // Center the text in the middle of the line.
    textFormat.LineAlignment = StringAlignment.Center;

    // Align the text to the left.
    textFormat.Alignment = StringAlignment.Far;

    // Draw the panel's text in dark blue using the Panel 
    // and Bounds properties of the StatusBarEventArgs object 
    // and the StringFormat object.
    e.Graphics.DrawString(e.Panel.Text, StatusBar1.Font, 
        Brushes.DarkBlue, new RectangleF(e.Bounds.X, 
        e.Bounds.Y, e.Bounds.Width, e.Bounds.Height), textFormat);

}
StatusBar^ StatusBar1;
void InitializeStatusBarPanels()
{
   StatusBar1 = gcnew StatusBar;
   
   // Create two StatusBarPanel objects.
   StatusBarPanel^ panel1 = gcnew StatusBarPanel;
   StatusBarPanel^ panel2 = gcnew StatusBarPanel;
   
   // Set the style of the panels.  
   // panel1 will be owner-drawn.
   panel1->Style = StatusBarPanelStyle::OwnerDraw;
   
   // The panel2 object will be drawn by the operating system.
   panel2->Style = StatusBarPanelStyle::Text;
   
   // Set the text of both panels to the same date string.
   panel1->Text = System::DateTime::Today.ToShortDateString();
   panel2->Text = System::DateTime::Today.ToShortDateString();
   
   // Add both panels to the StatusBar.
   StatusBar1->Panels->Add( panel1 );
   StatusBar1->Panels->Add( panel2 );
   
   // Make panels visible by setting the ShowPanels 
   // property to True.
   StatusBar1->ShowPanels = true;
   
   // Associate the event-handling method with the DrawItem event 
   // for the owner-drawn panel.
   StatusBar1->DrawItem += gcnew StatusBarDrawItemEventHandler( this, &Form1::DrawCustomStatusBarPanel );
   this->Controls->Add( StatusBar1 );
}


// Draw the panel.
void DrawCustomStatusBarPanel( Object^ sender, StatusBarDrawItemEventArgs^ e )
{
   
   // Draw a blue background in the owner-drawn panel.
   e->Graphics->FillRectangle( Brushes::AliceBlue, e->Bounds );
   
   // Create a StringFormat object to align text in the panel.
   StringFormat^ textFormat = gcnew StringFormat;
   
   // Center the text in the middle of the line.
   textFormat->LineAlignment = StringAlignment::Center;
   
   // Align the text to the left.
   textFormat->Alignment = StringAlignment::Far;
   
   // Draw the panel's text in dark blue using the Panel 
   // and Bounds properties of the StatusBarEventArgs object 
   // and the StringFormat object.
   e->Graphics->DrawString( e->Panel->Text, StatusBar1->Font, Brushes::DarkBlue, RectangleF(e->Bounds.X,e->Bounds.Y,e->Bounds.Width,e->Bounds.Height), textFormat );
}
private StatusBar statusBar1;

private void InitializeStatusBarPanels()
{
    statusBar1 = new StatusBar();
    // Create two StatusBarPanel objects.
    StatusBarPanel panel1 = new StatusBarPanel();
    StatusBarPanel panel2 = new StatusBarPanel();
    // Set the style of the panels.  
    // panel1 will be owner-drawn.
    panel1.set_Style(StatusBarPanelStyle.OwnerDraw);
    // The panel2 object will be drawn by the operating system.
    panel2.set_Style(StatusBarPanelStyle.Text);
    // Set the text of both panels to the same date string.
    panel1.set_Text(System.DateTime.get_Today().ToShortDateString());
    panel2.set_Text(System.DateTime.get_Today().ToShortDateString());
    // Add both panels to the StatusBar.
    statusBar1.get_Panels().Add(panel1);
    statusBar1.get_Panels().Add(panel2);
    // Make panels visible by setting the ShowPanels 
    // property to True.
    statusBar1.set_ShowPanels(true);
    // Associate the event-handling method with the DrawItem event 
    // for the owner-drawn panel.
    statusBar1.add_DrawItem(new StatusBarDrawItemEventHandler(
        DrawCustomStatusBarPanel));

    this.get_Controls().Add(statusBar1);
} //InitializeStatusBarPanels

// Draw the panel.
private void DrawCustomStatusBarPanel(Object sender,
    StatusBarDrawItemEventArgs e)
{
    // Draw a blue background in the owner-drawn panel.
    e.get_Graphics().FillRectangle(Brushes.get_AliceBlue(), e.get_Bounds());
    // Create a StringFormat object to align text in the panel.
    StringFormat textFormat = new StringFormat();
    // Center the text in the middle of the line.
    textFormat.set_LineAlignment(StringAlignment.Center);
    // Align the text to the left.
    textFormat.set_Alignment(StringAlignment.Far);
    // Draw the panel's text in dark blue using the Panel 
    // and Bounds properties of the StatusBarEventArgs object 
    // and the StringFormat object.
    e.get_Graphics().DrawString(e.get_Panel().get_Text(),
        statusBar1.get_Font(), Brushes.get_DarkBlue(),
        new RectangleF(e.get_Bounds().get_X(), e.get_Bounds().get_Y(),
        e.get_Bounds().get_Width(), e.get_Bounds().get_Height()), textFormat);
} //DrawCustomStatusBarPanel

継承階層

System.Object
   System.EventArgs
     System.Windows.Forms.DrawItemEventArgs
      System.Windows.Forms.StatusBarDrawItemEventArgs

スレッド セーフ

この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。

プラットフォーム

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。

バージョン情報

.NET Framework

サポート対象 : 2.0、1.1、1.0

参照

関連項目

StatusBarDrawItemEventArgs メンバ
System.Windows.Forms 名前空間
StatusBar.DrawItem イベント
StatusBarPanel
Graphics
Rectangle