失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 设置ToolStripProgressBar显示前景色和背景色

设置ToolStripProgressBar显示前景色和背景色

时间:2024-05-19 22:31:19

相关推荐

设置ToolStripProgressBar显示前景色和背景色

当进行开发的时候,不知道大家有没有注意到,不论是ToolStripProgressBar还是普通的ProgressBar,设置forecolor和backcolor其实是无效的。程序在运行的时候,仍然显示的是绿色的进度条和灰色的背景色。

其实,如果想简单解决这个问题可以设置不要启用Xp视觉样式。MSDN上有明确说明:

打开项目属性,取消“启用Xp视觉样式”前面的勾:

当设置好ToolStripProgressBar的forecolor和backcolor属性后运行:

但是取消了XP视觉样式,整个窗体都显得并不是那么好看。那么有没有办法在确保窗体使用Xp视觉样式的情况下,让ToolStripProgressBar显示设置的前景色和背景色。事实上,单独处理ToolStripProgressBar是比较麻烦的。这里采用了一种折中的方法,在窗体的ToolStrip上放置一个自定义的ProgressBar。

自定义ProgressBar的代码如下:

Public Class clsProgressBarInherits ProgressBarPublic Sub New()Me.SetStyle(ControlStyles.UserPaint, True)End SubProtected Overrides Sub OnPaint(e As PaintEventArgs)MyBase.OnPaint(e)Dim rec As New Rectangle(0, 0, Me.Width, Me.Height)rec.Height -= 2rec.Width = Bounds.Width * (Me.Value / Me.Maximum) - 2Dim br As New SolidBrush(Me.ForeColor)e.Graphics.FillRectangle(br, 2, 2, rec.Width, rec.Height)End SubEnd Class

上述代码中使用了ProgressBar本来的OnPaint事件,在此事件中对进度条进行了重绘制。

窗体的代码如下:

Dim i As IntegerDim prBar As clsProgressBarPrivate Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.LoadCall DrawNewProgressbar()End SubPrivate Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Ticki += 1ToolStripProgressBar1.Value = iprBar.Value = iIf i = 100 Then Timer1.Stop()End SubPrivate Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Clicki = 0Timer1.Start()End SubPrivate Sub DrawNewProgressbar()prBar = New clsProgressBarprBar.Width = 100prBar.Height = 22prBar.Minimum = 0prBar.Maximum = 100prBar.BackColor = Color.BlueprBar.ForeColor = Color.RedDim tsch As New ToolStripControlHost(prBar)ToolStrip1.Items.Add(tsch)prBar.Visible = TrueEnd Sub

上述代码中设置了clsProgressBar的相关属性,并使用

Dim tsch As New ToolStripControlHost(prBar)

ToolStrip1.Items.Add(tsch)

将其添加到了工具栏中。

运行时显示如下:

从上图可以看到,已经将自定义的进度条加入到了工具栏中。

相对第一种方法,第二种方法在开发时比较重要的一点就是绘制好前景色,这里仅仅作为演示,未对进度条的显示进行更多修饰。

如果觉得《设置ToolStripProgressBar显示前景色和背景色》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。