狀態欄我不想詳細解釋控件非常容易用StatusBar和StatusBarPanel配合使用非常簡單但是這樣只是滿足了基本的狀態欄功能的需要很多的時候我們可能還需要個性化的狀態欄我們需要隨心所欲的繪制它要做到這一點不難StatusBarPanel類提供了Style屬性將其設置為StatusBarPanelStyleOwnerDraw就可以自己編寫代碼繪制它了StatusBar的DrawItem事件當所有者描述的狀態欄控件的可視特征發生變化時發生此事件在這個事件裡安置繪制StatusBarPanel的程序代碼
StatusBarPanelStyle枚舉可以決定StatusBarPanel是由系統繪制還是由程序員親自編寫程序進行繪制有兩種選擇Text和OwnerDraw前者要求StatusBarPanel按照標准字體顯示文本後者允許程序員自己寫代碼繪制StatusBarPanel默認情況下是Text
以下代碼片斷自行繪制StatusBarPanel
在一個窗體上添加一個狀態欄將其ShowPanels屬性設置為true然後對其Panels屬性進行設置添加個StatusBarPanel其中第二個的Style屬性設置為Text其余兩個的Style設置為OwnerDraw
Private Sub StatusBar_DrawItem(ByVal sender As Object ByVal sbdevent As SystemWindowsFormsStatusBarDrawItemEventArgs) Handles StatusBarDrawItem
Dim g As Graphics = sbdeventGraphics
Dim rf As New RectangleF(sbdeventBoundsX sbdeventBoundsY _
sbdeventBoundsWidth sbdeventBoundsHeight)
If (sbdeventIndex = ) Then
gFillRectangle(BrushesRed rf)
Dim f As New Font(ËÎÌå )
Dim b As Brush = BrushesBlack
gDrawString(sbdeventPanelText f b rf)
End If
If (sbdeventIndex = ) Then
gFillRectangle(BrushesRed rf)
Dim f As New Font(ËÎÌå )
Dim b As Brush = BrushesBlack
gDrawString(sbdeventPanelText f b rf)
End If
End Sub
需要特別強調一下參數 SystemWindowsFormsStatusBarDrawItemEventArgs 該類型的參數包含一個與DrawItem事件相關的數據詳見下表
BackColor |
獲取所繪制的項的背景色 |
Bounds
獲取表示所繪制項的邊界的矩形
Font
獲取分配給所繪制項的字體
ForeColor
獲取所繪制項的前景色
Graphics
獲取要在其上繪制項的圖形表面
Index
獲取所繪制項的索引值
Panel
獲取要繪制的StatusBarPanel
State
獲取所繪制項的狀態
如何讓狀態條右下角的三角消失呢?
將statusBarSizingGrip屬性設置為false
如何讓狀態欄不顯示其StatusBarPanel?
把statusBar的ShowPanel屬性設置為false
怎樣在程序運行過程中向狀態條添加(刪除)面板?
使用StatusBar的Panels屬性
Private Sub btnAddPanel_Click(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handles btnAddPanelClick
Dim panel As New StatusBarPanel
panelText = 動態添加的面板!
MeStatusBarPanelsAdd(panel)
End Sub
Private Sub btnDelPanel_Click(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handles btnDelPanelClick
Dim str As String = 動態添加的面板!
Dim panel As StatusBarPanel
For Each p As StatusBarPanel In MeStatusBarPanels
If (pText = str) Then
panel = p
End If
Next
If (Not (panel Is Nothing)) Then
MeStatusBarPanelsRemove(panel)
End If
End Sub
如何在狀態條面板上顯示圖標?
使用StatusBarPanelIcon屬性
如何自動分配狀態條空間?
使用StatusBarPanelAutoSize屬性該值指示是否自動調整狀態欄面板的大小該屬性接受一個StatusBarPanelAutoSize枚舉默認值是StatusBarPanelAutoSizeNone這意味著不論狀態條如何面板始終保持大小不變除此之外還有兩種選擇Contents和Springs前者表示面板寬度取決於其內容後者表示面板大小會被自動調整至於調整之後合適與否那我可就說不准了如果AutoSize設置為Springs還可以用MinWidth屬性設置最小寬度
From:http://tw.wingwit.com/Article/program/net/201311/12124.html