郁闷了一个晚上,关于statusBar1_DrawItem事件不能执行的问题
各位仁兄仁姐:
小弟在一个winform上加一个状态栏statusBar1,想实现在运行程序时在statusBar1上显示1个小图片,就在statusBar1上增加了DrawItem事件,可是就是运行不出来,并且设置了断点也执行不到,程序如下:private void statusBar1_DrawItem(object sender, System.Windows.Forms.StatusBarDrawItemEventArgs sbdevent)
{
Graphics textGrap=this.CreateGraphics();
imageList1.Draw(sbdevent.Graphics,statusBar1.Location.X,statusBar1.Location.Y+5,0);
}
请各位高手指点迷津,在此不胜感激。
问题点数:20、回复次数:5Top
1 楼gallcy(月满西楼)回复于 2005-04-02 23:26:45 得分 0
自己先顶一下,我用的win2003+vs2003Top
2 楼gallcy(月满西楼)回复于 2005-04-03 07:08:11 得分 0
没人回答,自己再顶一下Top
3 楼webserv2(New life New job)回复于 2005-04-03 08:05:43 得分 10
参考一下 在状态栏自绘进度条
Private Sub Status_DrawItem(ByVal sender As Object, ByVal sbdevent As System.Windows.Forms.StatusBarDrawItemEventArgs) Handles Status.DrawItem
Dim g As Graphics = Status.CreateGraphics()
Dim x, y, w, wall, h As Integer
x = 4
y = 4
wall = Status.Panels(0).Width
If WaitSend + ReadySend + BadSend = 0 Then
w = 0
Else
w = wall * (ReadySend + BadSend) / (WaitSend + ReadySend + BadSend)
End If
Debug.WriteLine(w.ToString)
h = Status.Height - 7
Dim rect As RectangleF = New RectangleF(x, y, wall, h)
Dim rectDraw As RectangleF = New RectangleF(x, y, w, h) '当前处理的进度的 Bound
'g.Clip=new Region(rect);
'计算 xx% 的坐标
Dim sb As String
If WaitSend + ReadySend + BadSend = 0 Then
sb = ""
Else
sb = Convert.ToInt32(Convert.ToDouble(ReadySend + BadSend) / Convert.ToDouble(WaitSend + ReadySend + BadSend) * 100).ToString() + "%"
End If
Dim sf As SizeF = g.MeasureString(sb, New Font("Arial", 9))
Dim pf As PointF = New PointF(6 + (wall - sf.Width) / 2, (h - sf.Height) / 2 + 3)
g.DrawString(sb, New Font("Arial", 9), New SolidBrush(Color.Black), pf) ' 写上黑体的 xx %
g.FillRectangle(New SolidBrush(Color.FromArgb(21, 29, 193)), rectDraw) ' 填充当前进度的暗色方块.
g.Clip = New Region(rectDraw) ' //重新设置 Clip为 当前进度的Bound ,
g.DrawString(sb, New Font("Arial", 9), New SolidBrush(Color.White), pf) ' 再写白色的 xx%
'这样就可以保证进度条不管到哪里,暗色方块上面的字,是白色,正常地方则是黑色.
g.Dispose()
End SubTop
4 楼iuIRCClient(我是老鹰)回复于 2005-04-03 16:35:31 得分 5
要想执行drawitem事件,你必须设置statusbar的drawmode属性,设成ownerdraw就可以了Top
5 楼applelppa(人生若只如初见)回复于 2005-04-03 17:16:00 得分 5
只有 StatusBar 控件中 StatusBarPanel 的 StatusBarPanel.Style 属性设置成 OwnerDraw 时才引发此事件。
-----------------------------------
四十年来家国
三千里地山河
凤阁龙楼连霄汉
玉树琼枝作烟箩
几曾识干戈Top




