VB.NET进度条百分比

时间:2013-01-09 17:42:44

标签: vb.net progress-bar transparent percentage

我创建了一个完美的进度条。我最近添加了百分比,但我想在进度条顶部显示标签。

像这样:

enter image description here

您可以看到的唯一问题是背景不透明。暂缓:

lblPercentage.BackColor = Color.Transparent

表单加载...是否有可以为此做的事情?

2 个答案:

答案 0 :(得分:3)

Transparent BackColor实际上有效。问题是标签从表单中获取其BackColor,因为表单是其Parent。因此,我们必须使进度条成为其父级并调整其位置,因为现在必须相对于进度条指定它。将此代码添加到表单中:

Public Sub New()
    InitializeComponent()

    Dim pos As Point = PointToScreen(lblPercentage.Location)
    pos = myProgressBar.PointToClient(pos)
    lblPercentage.Parent = myProgressBar
    lblPercentage.Location = pos
    lblPercentage.BackColor = Color.Transparent
End Sub

或者,您可以像这样计算标签的位置

lblPercentage.Location = New Point(lblPercentage.Location.X - myProgressBar.Location.X,
                                   lblPercentage.Location.Y - myProgressBar.Location.Y)

您无法在设计器中进行此操作,因为您的进度条可能不是容器控件(即在其上放置标签不会使其成为条形图的子控件)并且您将无法在设计器中看到结果。


<强>更新

你也可以尝试这些替代方案:

  • 在控件的OnPaint方法中绘制百分比数字(覆盖OnPaint)。
  • 在进度条中执行我在上面显示的内容。您可以在进度条的构造函数中以编程方式添加标签。
  • 使用UserControl作为进度条的基类。这将允许您在设计器中将标签放在其上。

答案 1 :(得分:1)

这里你已经使你的进度条透明,这意味着它只对进度条透明,并且在进度条后面有表单,这就是它显示表单的原因。 这是一个Windows限制,透明效果相对于顶级窗口,堆叠效果不起作用。总是你会看到form作为背景,