2013-01-09 224 views
2

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

像这样:

enter image description here

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

lblPercentage.BackColor = Color.Transparent 

在表单加载...有什么可以做到这一点?

+1

http://www.vbdotnetforums.com/using-components-controls/7959-text-inside-progressbar.html –

+0

此链接都有工作了如何做到这一点 –

+0

完整的源代码,谢谢! – Alex

回答

3

Transparent BackColor实际上起作用。问题在于标签从表单中获取它的BackColor,因为表单是其父。因此,我们必须将进度条作为其父项并调整其位置,因为现在必须相对于进度条进行指定。此代码添加到您的窗体:

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) 

你不能在设计使这个,因为你的进度条可能不是一个容器控件(即在其上放置标签不会使其成为酒吧的子控件),并且您不会在设计师中看到结果。


UPDATE

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

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

哦,我现在必须改变进度条的背景颜色。问题是我不能把进度条的颜色变成透明的......有没有办法解决这个问题? – Alex

+0

进度条的背面颜色不相关(选择您喜欢的任何颜色),只有标签的背面颜色必须透明。 –

+0

这很奇怪......当我改变进度条的背景颜色时,它反映了标签的背景颜色。标签设置为透明。 – Alex

1

这里你已经使你的进度条透明,这意味着它只透明进度条和进度条后面有形式,这就是为什么它显示形式。 这是一个Windows的限制,透明效果是相对于顶级窗口,堆叠效果不起作用。一般你会看到form作为背景,

+0

所以没有办法让标签透明,而不是表单的进度条? – Alex