日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2023/12/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实现自定义背景色、前景色、显示进度的进度条 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)?jiān)陲@著位置標(biāo)明本文出處以及作者網(wǎng)名,未經(jīng)作者允許不得用于商業(yè)目的。


默認(rèn)情況下,VB.Net自帶的進(jìn)度條都是固定顏色的。即使設(shè)置前景色、背景色也沒(méi)用,另外,自帶進(jìn)度條也不顯示當(dāng)前進(jìn)度數(shù)值。
實(shí)際使用時(shí),如果有特殊需求,使用默認(rèn)進(jìn)度條,顯然效果不太好。
本篇文章建立一個(gè)ProgressBar的繼承類(lèi)NewProgressBar,從而實(shí)現(xiàn)自定義背景色、前景色、顯示進(jìn)度的進(jìn)度條。

最終實(shí)現(xiàn)效果:

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這個(gè)基類(lèi)的(雖然對(duì)于ProgressBar沒(méi)用),增加了FontColor屬性來(lái)設(shè)置進(jìn)度數(shù)值的顏色。
窗體代碼:
窗體載入時(shí):

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組件。設(shè)置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

?

如果覺(jué)得代碼中生成調(diào)用NewProgressBar不方便,也可以像普通控件一樣從工具箱中調(diào)用。當(dāng)NewProgressBar類(lèi)的代碼完成后,可以從工具箱找到這個(gè)組件,拖放到窗體上:

直接在屬性窗口中設(shè)置相關(guān)屬性:

向窗體添加一個(gè)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

運(yùn)行效果:

?

由于.net平臺(tái)下C#和vb.NET很相似,本文也可以為C#愛(ài)好者提供的參考。

學(xué)習(xí)更多vb.net知識(shí),請(qǐng)參看?vb.net 教程 目錄

總結(jié)

以上是生活随笔為你收集整理的实现自定义背景色、前景色、显示进度的进度条的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。