您现在的位置是:首页 >

什么是随心所欲 随心所欲绘制状态栏

火烧 2021-12-28 08:08:47 1057
随心所欲绘制状态栏   状态栏我不想详细解释 控件非常容易用 Statu Bar和Statu BarPa el配合使用 非常简单 但是这样只是满足了基本的状态栏功能的需要 很多的时候我们可能还需要个性

随心所欲绘制状态栏  

  状态栏我不想详细解释 控件非常容易用 StatusBar和StatusBarPanel配合使用 非常简单 但是这样只是满足了基本的状态栏功能的需要 很多的时候我们可能还需要个性化的状态栏 我们需要随心所欲的绘制它 要做到这一点不难 StatusBarPanel类提供了Style属性 将其设置为StatusBarPanelStyle OwnerDraw就可以自己编写代码绘制它了 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 System Windows Forms StatusBarDrawItemEventArgs) Handles StatusBar 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 = ) Then

  g FillRectangle(Brushes Red rf)

什么是随心所欲 随心所欲绘制状态栏

  Dim f As New Font( ËÎÌå )

  Dim b As Brush = Brushes Black

  g DrawString(sbdevent Panel Text f b rf)

  End If

  If (sbdevent Index = ) Then

  g FillRectangle(Brushes Red rf)

  Dim f As New Font( ËÎÌå )

  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 StatusBar 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 StatusBar Panels

  If (p Text = str) Then

  panel = p

  End If

  Next

  If (Not (panel Is Nothing)) Then

  Me StatusBar Panels Remove(panel)

  End If

  End Sub

  如何在状态条面板上显示图标?

  使用StatusBarPanel Icon属性

  如何自动分配状态条空间?

lishixinzhi/Article/program/net/201311/12124  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码