2

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

像这样:

在此处输入图像描述

您可以看到的唯一问题是背景不透明。尽管有:

lblPercentage.BackColor = Color.Transparent

在表单加载...有什么可以做的吗?

4

2 回答 2

3

透明背景色确实有效。问题是标签从表单中获取它的背景色,因为表单是它的父级。因此,我们必须将进度条设为其父级并调整其位置,因为现在必须相对于进度条指定它。将此代码添加到您的表单中:

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)。
  • 在进度条中执行我在上面显示的操作。您可以在进度条的构造函数中以编程方式添加标签。
  • 使用 aUserControl作为进度条的基类。这将允许您将标签放在设计器中。
于 2013-01-09T18:12:52.073 回答
1

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

于 2013-01-09T17:48:19.657 回答