【问题标题】:how to customize a progress bar using vb.net如何使用 vb.net 自定义进度条
【发布时间】:2013-12-13 04:03:39
【问题描述】:

我试图创建一个相对于值进行颜色编码的进度条。例如,从 0 到 35,进度条应该是红色的,35 以上应该是绿色的。知道我该怎么做吗?

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

P.S 在同一个进度条中,两种颜色都必须根据值显示

【问题讨论】:

  • 我尝试了 For 和 If 语句,但无法得到它? :(
  • 您介意展示一下您目前的想法吗?
  • @Edper - 检查我上面的问题:)
  • 顺便问一下为什么你ProgressBar1ProgressBar2?这是正确的还是只是你的一种类型?
  • 我不知道这是否可行,但您一次只能显示一种颜色,而不是在一个进度条中显示两种颜色,除非您将其设为您自己的自定义进度条。

标签: vb.net progress-bar


【解决方案1】:

您需要更改此设置。

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

【讨论】:

  • 绝对有效.. 但是有没有办法保留视觉样式并以编程方式更改颜色? Levi 在下面的回答也无济于事。
【解决方案2】:

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

例如:

If ProgressBar1.value > 35 Then
    ProgressBar1.ForeColor = Color.Lime
End If

我希望这会有所帮助;)

编辑:尝试使用ProgressBar1.ForeColor而不是ProgressBar1.BackColor

【讨论】:

  • 谢谢。但是如何将进度条的位置存储在 ProgressBar1.value 中?
【解决方案3】:

你可以使用这个方法。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-29
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 2018-10-13
    • 1970-01-01
    • 2015-08-17
    相关资源
    最近更新 更多