我创建了一个完美的进度条。我最近添加了百分比,但我想在进度栏上显示标签。VB.NET进度条百分比
像这样:
,你可以看到的唯一的问题是,背景是不是透明的。尽管有:
lblPercentage.BackColor = Color.Transparent
在表单加载...有什么可以做到这一点?
我创建了一个完美的进度条。我最近添加了百分比,但我想在进度栏上显示标签。VB.NET进度条百分比
像这样:
,你可以看到的唯一的问题是,背景是不是透明的。尽管有:
lblPercentage.BackColor = Color.Transparent
在表单加载...有什么可以做到这一点?
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
作为进度条的基类。这将允许您在设计器上放置标签。这里你已经使你的进度条透明,这意味着它只透明进度条和进度条后面有形式,这就是为什么它显示形式。 这是一个Windows的限制,透明效果是相对于顶级窗口,堆叠效果不起作用。一般你会看到form
作为背景,
所以没有办法让标签透明,而不是表单的进度条? – Alex
http://www.vbdotnetforums.com/using-components-controls/7959-text-inside-progressbar.html –
此链接都有工作了如何做到这一点 –
完整的源代码,谢谢! – Alex