【问题标题】:VB.NET Progress bar percentageVB.NET 进度条百分比
【发布时间】:2012-12-23 23:20:55
【问题描述】:

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

像这样:

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

lblPercentage.BackColor = Color.Transparent

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

【问题讨论】:

标签: vb.net progress-bar transparent percentage


【解决方案1】:

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

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 作为进度条的基类。这将允许您将标签放置在设计器中。

【讨论】:

  • 哦,我现在必须更改进度条的背景颜色。问题是我不能把进度条的颜色变回透明......有没有办法解决这个问题?
  • 进度条的背景颜色不相关(选择你喜欢的颜色),只有标签的背景颜色必须是透明的。
  • 这很奇怪......当我更改进度条的背景颜色时,它反映了标签的背景颜色。标签设置为透明。
  • 抱歉,我对如何使用 OnPaint 方法和 UserControl 类感到困惑。我需要更多地研究它,看看我能不能做点什么
【解决方案2】:

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

【讨论】:

  • 那么就没有办法用进度条代替表单让标签透明了吗?
猜你喜欢
  • 1970-01-01
  • 2015-06-03
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
  • 2017-08-03
  • 1970-01-01
相关资源
最近更新 更多