欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

实现自定义背景色、前景色、显示进度的进度条

发布时间:2023/12/14 编程问答 38 豆豆
生活随笔 收集整理的这篇文章主要介绍了 实现自定义背景色、前景色、显示进度的进度条 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。


默认情况下,VB.Net自带的进度条都是固定颜色的。即使设置前景色、背景色也没用,另外,自带进度条也不显示当前进度数值。
实际使用时,如果有特殊需求,使用默认进度条,显然效果不太好。
本篇文章建立一个ProgressBar的继承类NewProgressBar,从而实现自定义背景色、前景色、显示进度的进度条。

最终实现效果:

NewProgressBar的代码:

Public Class NewProgressBarInherits ProgressBarPublic Property FontColor As ColorPublic Sub New()Me.SetStyle(ControlStyles.UserPaint, True)End SubProtected Overrides Sub OnPaint(e As PaintEventArgs)Dim percent As Integerpercent = CType((Value * 100) / Maximum, Integer)Dim rec As Rectangle = e.ClipRectanglerec.Width = CType((rec.Width * Value / Maximum), Integer) - 4If ProgressBarRenderer.IsSupported ThenProgressBarRenderer.DrawHorizontalBar(e.Graphics, e.ClipRectangle)End Ifrec.Height = rec.Height - 4e.Graphics.FillRectangle(New SolidBrush(Me.BackColor), 0, 0, e.ClipRectangle.Width, e.ClipRectangle.Height)e.Graphics.FillRectangle(New SolidBrush(Me.ForeColor), 2, 2, rec.Width, rec.Height)e.Graphics.DrawString(percent.ToString & "%", New Font("宋体", 10), New SolidBrush(FontColor), New Point(0, 5))MyBase.OnPaint(e)End SubEnd Class

其中,背景色、前景色使用ProgressBar这个基类的(虽然对于ProgressBar没用),增加了FontColor属性来设置进度数值的颜色。
窗体代码:
窗体载入时:

Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Loadnewpro = New NewProgressBarnewpro.Left = 20newpro.Top = 40newpro.Width = 200newpro.BackColor = Color.FromArgb(128, 255, 128)newpro.ForeColor = Color.DeepSkyBluenewpro.FontColor = Color.Whitenewpro.Maximum = 100Me.Controls.Add(newpro)newpro.Visible = TrueEnd Sub

向添加Timer组件。设置Timer的Tick事件代码:

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Ticknewpro.Value += 1If newpro.Value = newpro.Maximum Then Timer1.Stop()End Sub

窗体上按钮代码:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.ClickTimer1.Start()End Sub

 

如果觉得代码中生成调用NewProgressBar不方便,也可以像普通控件一样从工具箱中调用。当NewProgressBar类的代码完成后,可以从工具箱找到这个组件,拖放到窗体上:

直接在属性窗口中设置相关属性:

向窗体添加一个Button和Timer,增加代码如下:

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.ClickTimer2.Start()End SubPrivate Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.TickNewProgressBar1.Value += 1If NewProgressBar1.Value = NewProgressBar1.Maximum Then Timer2.Stop()End Sub

运行效果:

 

由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供的参考。

学习更多vb.net知识,请参看 vb.net 教程 目录

总结

以上是生活随笔为你收集整理的实现自定义背景色、前景色、显示进度的进度条的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。