StatusBarPanelStyle 枚举

指定 StatusBar 控件上的 StatusBarPanel 对象是所有者描述的还是系统描述的。

**命名空间:**System.Windows.Forms
**程序集:**System.Windows.Forms(在 system.windows.forms.dll 中)

语法

声明
Public Enumeration StatusBarPanelStyle
用法
Dim instance As StatusBarPanelStyle
public enum StatusBarPanelStyle
public enum class StatusBarPanelStyle
public enum StatusBarPanelStyle
public enum StatusBarPanelStyle

成员

  成员名称 说明
OwnerDraw StatusBarPanel 由所用者绘制。 
Text StatusBarPanel 以标准字体显示文本。 

备注

用此枚举的成员来设置 StatusBarPanel 类的 Style 属性的值。“样式”属性确定 StatusBarPanel 的显示方式。StatusBarPanel 对象可以显示简单文本,也可以是所有者描述的。所有者描述的 StatusBarPanel 对象支持显示 StatusBar 控件上的图像或与其他 StatusBarPanel 对象不同的字体,而系统描述的 StatusBarPanel 对象仅用于显示文本(或者如果在 StatusBarPanelIcon 属性中指定了一个图标,则可用于显示文本和图标)。若要在所有者描述的 StatusBarPanel 上执行所有者描述的操作,请使用 StatusBar 控件的 DrawItem 事件。

示例

下面的代码示例演示如何使用 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

平台

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

请参见

参考

System.Windows.Forms 命名空间
StatusBarPanel 类
StatusBarPanel.Style 属性
StatusBar 类
StatusBar.DrawItem 事件