次の方法で共有


StatusBar.OnDrawItem メソッド

OnDrawItem イベントを発生させます。

Protected Overridable Sub OnDrawItem( _
   ByVal sbdievent As StatusBarDrawItemEventArgs _)
[C#]
protected virtual void OnDrawItem(StatusBarDrawItemEventArgssbdievent);
[C++]
protected: virtual void OnDrawItem(StatusBarDrawItemEventArgs* sbdievent);
[JScript]
protected function OnDrawItem(
   sbdievent : StatusBarDrawItemEventArgs);

パラメータ

解説

イベントが発生すると、デリゲートを使用してイベント ハンドラが呼び出されます。詳細については、「 イベントの発生 」を参照してください。

OnDrawItem メソッドを使用すると、デリゲートを結び付けずに、派生クラスでイベントを処理させることもできます。派生クラスでイベントを処理する場合は、この手法をお勧めします。

継承時の注意: 派生クラスで OnDrawItem をオーバーライドする場合は、登録されているデリゲートがイベントを受け取ることができるように、基本クラスの OnDrawItem メソッドを呼び出してください。

使用例

[Visual Basic, C#, C++] カスタム背景と現在の日付を表示するオーナー描画 StatusBarPanel を作成する方法を次の例に示します。この例は、 StatusBar コントロールの DrawItem イベントが、この例で定義されているイベント ハンドラに接続されていることを前提にしています。

 
Private Sub StatusBar1_DrawItem(ByVal sender As Object, ByVal sbdevent As System.Windows.Forms.StatusBarDrawItemEventArgs) Handles StatusBar1.DrawItem

   ' Create a StringFormat object to align text in the panel.
   Dim sf As New StringFormat()
   ' Format the String of the StatusBarPanel to be centered.
   sf.Alignment = StringAlignment.Center
   sf.LineAlignment = StringAlignment.Center

   ' Draw a back blackground in owner-drawn panel.
   sbdevent.Graphics.FillRectangle(Brushes.Black, sbdevent.Bounds)
   ' Draw the current date (short date format) with white text in the control's font.
   sbdevent.Graphics.DrawString(DateTime.Today.ToShortDateString(), StatusBar1.Font, Brushes.White, _
         New RectangleF(sbdevent.Bounds.X, sbdevent.Bounds.Y, _
         sbdevent.Bounds.Width, sbdevent.Bounds.Height), sf)
End Sub

[C#] 
private void DrawMyPanel(object sender, System.Windows.Forms.StatusBarDrawItemEventArgs sbdevent)
{
   // Create a StringFormat object to align text in the panel.
   StringFormat sf = new StringFormat();
   // Format the String of the StatusBarPanel to be centered.
   sf.Alignment = StringAlignment.Center;
   sf.LineAlignment = StringAlignment.Center;

   // Draw a back blackground in owner-drawn panel.
   sbdevent.Graphics.FillRectangle(Brushes.Black, sbdevent.Bounds);
   // Draw the current date (short date format) with white text in the control's font.
   sbdevent.Graphics.DrawString(DateTime.Today.ToShortDateString(), 
      statusBar1.Font,Brushes.White,sbdevent.Bounds,sf);
}

[C++] 
private:
    void DrawMyPanel(Object* /*sender*/, System::Windows::Forms::StatusBarDrawItemEventArgs* sbdevent) {
        // Create a StringFormat object to align text in the panel.
        StringFormat* sf = new StringFormat();
        // Format the String of the StatusBarPanel to be centered.
        sf->Alignment = StringAlignment::Center;
        sf->LineAlignment = StringAlignment::Center;

        // Draw a back blackground in owner-drawn panel.
        sbdevent->Graphics->FillRectangle(Brushes::Black, sbdevent->Bounds);
        // Draw the current date (short date format) with white text in the control's font.
        sbdevent->Graphics->DrawString(DateTime::Today.ToShortDateString(),
            statusBar1->Font, Brushes::White, RectangleF::op_Implicit(sbdevent->Bounds), sf);
    }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

StatusBar クラス | StatusBar メンバ | System.Windows.Forms 名前空間 | DrawItem | StatusBarDrawItemEventArgs