欢迎光临
我们一直在努力

随心所欲绘制状态栏-ASP教程,系统相关

建站超值云服务器,限时71元/月

状态栏我不想详细解释。控件非常容易用。statusbar和statusbarpanel配合使用,非常简单。但是这样只是满足了基本的状态栏功能的需要,很多的时候我们可能还需要个性化的状态栏。我们需要随心所欲的绘制它。要做到这一点不难,statusbarpanel类提供了style属性,将其设置为statusbarpanelstyle.ownerdraw就可以自己编写代码绘制它了。statusbar的drawitem事件当所有者描述的状态栏控件的可视特征发生变化时,发生此事件。在这个事件里安置绘制statusbarpanel的程序代码。

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属性设置最小宽度。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 随心所欲绘制状态栏-ASP教程,系统相关
分享到: 更多 (0)