如何使用vb.net自定义进度条

如何使用vb.net自定义进度条,vb.net,progress-bar,Vb.net,Progress Bar,我试图创建一个进度条,该进度条根据值进行颜色编码。例如,从0到35,进度条应为红色,35以上为绿色。你知道我该怎么做吗 If ProgressBar1.Value >= 35 Then ProgressBar1.BackColor = Color.Green Else ProgressBar1.BackColor = Color.Red End If p.S在同一进度条中,两种颜色都必须基于值显示进度条的位置存储在ProgressBar1.value中。您可以在If语句中检查此值,并使用

我试图创建一个进度条,该进度条根据值进行颜色编码。例如,从0到35,进度条应为红色,35以上为绿色。你知道我该怎么做吗

If ProgressBar1.Value >= 35 Then
ProgressBar1.BackColor = Color.Green
Else
ProgressBar1.BackColor = Color.Red
End If

p.S在同一进度条中,两种颜色都必须基于值显示

进度条的位置存储在
ProgressBar1.value
中。您可以在
If
语句中检查此值,并使用
ProgressBar1.ForeColor

例如:

我希望这有帮助;)


编辑:尝试使用
ProgressBar1.ForeColor
而不是
ProgressBar1.BackColor
您需要更改此选项的设置

Go to Project --> [WindowsApplication] Properties

On Application Tab -- Uncheck Enable Visual Styles
但是,请注意,您将看到进度条上有视觉变化

然后您可能会编写如下代码:

If (ProgressBar1.Value > 35) Then
    ProgressBar1.ForeColor = Color.Red
Else
    ProgressBar1.ForeColor = Color.Green
End If

你可以用这个方法

Declare Auto Function SendMessage Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Enum ProgressBarColor
    Green = &H1
    Red = &H2
    Yellow = &H3
End Enum
Private Shared Sub ChangeProgBarColor(ByVal ProgressBar_name As Windows.Forms.ProgressBar, ByVal ProgressBar_Color As ProgressBarColor)
    SendMessage(ProgressBar_name.Handle, &H410, ProgressBar_Color, 0)
End Sub
然后通过调用上面的函数添加条件语句,例如

 If ProgressBar1.Value >= 35 Then
     ChangeProgBarColor(ProgressBar1, ProgressBarColor.Red)
 Else
     ChangeProgBarColor(ProgressBar1, ProgressBarColor.Yellow)
 End If

我尝试了For和If语句,但没有得到它:(你介意展示一下你到目前为止的想法吗?@Edper-检查我上面的问题:)顺便问一下,你为什么
ProgressBar1
ProgressBar2
?这是正确的还是您的一种类型?我不知道这是否可行,但您一次只能显示一种颜色,而不是在一个进度条中显示两种颜色,除非您自己定制进度条。谢谢。但是我怎样才能在ProgressBar1.value中存储进度条的位置呢?当然可以。。但是,有没有一种方法可以保留视觉样式并以编程方式更改颜色?李维下面的回答也没有帮助。
 If ProgressBar1.Value >= 35 Then
     ChangeProgBarColor(ProgressBar1, ProgressBarColor.Red)
 Else
     ChangeProgBarColor(ProgressBar1, ProgressBarColor.Yellow)
 End If