扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
StatusBarPanelStyle枚举可以决定StatusBarPanel是由系统绘制还是由程序员亲自编写程序进行绘制。有两种选择Text和OwnerDraw。前者要求StatusBarPanel按照标准字体显示文本,后者允许程序员自己写代码绘制StatusBarPanel。默认情况下是Text。
以下代码片断自行绘制StatusBarPanel:
在一个窗体上添加一个状态栏,将其ShowPanels属性设置为true。然后,对其Panels属性进行设置。添加3个StatusBarPanel,其中第二个的Style属性设置为Text,其余两个的Style设置为OwnerDraw。
Private Sub StatusBar1_DrawItem(ByVal sender As Object, ByVal sbdevent As System.Windows.Forms.StatusBarDrawItemEventArgs) Handles StatusBar1.DrawItem
Dim g As Graphics = sbdevent.Graphics
Dim rf As New RectangleF(sbdevent.Bounds.X, sbdevent.Bounds.Y, _
sbdevent.Bounds.Width, sbdevent.Bounds.Height)
If (sbdevent.Index = 0) Then
g.FillRectangle(Brushes.Red, rf)
Dim f As New Font("ËÎÌå", 10)
Dim b As Brush = Brushes.Black
g.DrawString(sbdevent.Panel.Text, f, b, rf)
End If
If (sbdevent.Index = 2) Then
g.FillRectangle(Brushes.Red, rf)
Dim f As New Font("ËÎÌå", 10)
Dim b As Brush = Brushes.Black
g.DrawString(sbdevent.Panel.Text, f, b, rf)
End If
End Sub
需要特别强调一下参数 System.Windows.Forms.StatusBarDrawItemEventArgs 。该类型的参数包含一个与DrawItem事件相关的数据。详见下表:
BackColor |
获取所绘制的项的背景色。 |
---|---|
Bounds |
获取表示所绘制项的边界的矩形。 |
Font |
获取分配给所绘制项的字体。 |
ForeColor |
获取所绘制项的前景色。 |
Graphics |
获取要在其上绘制项的图形表面。 |
Index |
获取所绘制项的索引值。 |
Panel |
获取要绘制的StatusBarPanel。 |
State |
获取所绘制项的状态。 |
如何让状态条右下角的三角消失呢?
将statusBar.SizingGrip属性设置为false。
如何让状态栏不显示其StatusBarPanel?
把statusBar的ShowPanel属性设置为false。
怎样在程序运行过程中向状态条添加(删除)面板?
使用StatusBar的Panels属性。
Private Sub btnAddPanel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddPanel.Click
Dim panel As New StatusBarPanel
panel.Text = "动态添加的面板!"
Me.StatusBar1.Panels.Add(panel)
End Sub
Private Sub btnDelPanel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelPanel.Click
Dim str As String = "动态添加的面板!"
Dim panel As StatusBarPanel
For Each p As StatusBarPanel In Me.StatusBar1.Panels
If (p.Text = str) Then
panel = p
End If
Next
If (Not (panel Is Nothing)) Then
Me.StatusBar1.Panels.Remove(panel)
End If
End Sub
如何在状态条面板上显示图标?
使用StatusBarPanel.Icon属性。
如何自动分配状态条空间?
使用StatusBarPanel.AutoSize属性。该值指示是否自动调整状态栏面板的大小。该属性接受一个StatusBarPanelAutoSize枚举。默认值是StatusBarPanelAutoSize.None,这意味着不论状态条如何面板始终保持大小不变。除此之外还有两种选择,Contents和Springs。前者表示面板宽度取决于其内容,后者表示面板大小会被自动调整,至于调整之后合适与否,那我可就说不准了。如果AutoSize设置为Springs,还可以用MinWidth属性设置最小宽度。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者