StatusBarDrawItemEventHandler StatusBarDrawItemEventHandler StatusBarDrawItemEventHandler StatusBarDrawItemEventHandler Delegate

定义

表示将用来处理 DrawItemStatusBar 事件的方法。Represents the method that will handle the DrawItem event of a StatusBar.

public delegate void StatusBarDrawItemEventHandler(System::Object ^ sender, StatusBarDrawItemEventArgs ^ sbdevent);
public delegate void StatusBarDrawItemEventHandler(object sender, StatusBarDrawItemEventArgs sbdevent);
type StatusBarDrawItemEventHandler = delegate of obj * StatusBarDrawItemEventArgs -> unit
Public Delegate Sub StatusBarDrawItemEventHandler(sender As Object, sbdevent As StatusBarDrawItemEventArgs)

参数

sender
Object Object Object Object

事件源。The source of the event.

继承
StatusBarDrawItemEventHandlerStatusBarDrawItemEventHandlerStatusBarDrawItemEventHandlerStatusBarDrawItemEventHandler

示例

下面的代码示例演示如何使用StatusBarPanel.Style属性StatusBarDrawItemEventHandler 、委托StatusBarPanelStyleStatusBarDrawItemEventArgs类、枚举和Panel属性。The following code example demonstrates how to use the StatusBarPanel.Style property, the StatusBarDrawItemEventHandler delegate, the StatusBarDrawItemEventArgs class, the StatusBarPanelStyle enumeration and the Panel property. 若要运行该示例, 请将以下代码粘贴到窗体中。To run the example, paste the following code in a form. 在窗体的构造函数或Load事件处理方法中调用方法。InitializeStatusBarPanelsCall the InitializeStatusBarPanels method in the form's constructor or Load event-handling method.

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.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);

}
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

注解

创建 StatusBarDrawItemEventHandler 委托时,需要标识将处理该事件的方法。When you create a StatusBarDrawItemEventHandler delegate, you identify the method that will handle the event. 若要将事件与事件处理程序关联,请将该委托的一个实例添加到事件中。To associate the event with your event handler, add an instance of the delegate to the event. 除非移除了该委托,否则每当发生该事件时就会调用事件处理程序。The event handler is called whenever the event occurs, unless you remove the delegate. 有关事件处理程序委托的详细信息, 请参阅处理和引发事件For more information about event handler delegates, see Handling and Raising Events.

扩展方法

GetMethodInfo(Delegate) GetMethodInfo(Delegate) GetMethodInfo(Delegate) GetMethodInfo(Delegate)

获取指示指定委托表示的方法的对象。Gets an object that represents the method represented by the specified delegate.

适用于

另请参阅