2013-01-09 270 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