完全に機能するプログレスバーを作成しました。最近パーセンテージを追加しましたが、進行状況バーの上にラベルを表示したいと思います。
そのようです:
ご覧のとおり、唯一の問題は、背景が透明でないことです。持っているにもかかわらず:
lblPercentage.BackColor = Color.Transparent
フォームの読み込み時...これに対してできることはありますか?
完全に機能するプログレスバーを作成しました。最近パーセンテージを追加しましたが、進行状況バーの上にラベルを表示したいと思います。
そのようです:
ご覧のとおり、唯一の問題は、背景が透明でないことです。持っているにもかかわらず:
lblPercentage.BackColor = Color.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)
プログレス バーはおそらくコンテナー コントロールではない (つまり、ラベルを配置してもバーの子コントロールにはならない) ため、デザイナーでこれを作成することはできず、デザイナーで結果が表示されません。
アップデート
次の代替手段を試すこともできます。
OnPaint
ます (オーバーライドOnPaint
)。UserControl
プログレス バーの基本クラスとして使用します。これにより、デザイナーでラベルを配置できます。ここでは、進行状況バーを透明にしました。つまり、進行状況バーに対してのみ透明になり、進行状況バーの後ろにフォームがあるため、フォームが表示されます。透過効果が最上位ウィンドウに相対的であることは Windows の制限であり、積み重ね効果は機能しません。常にform
背景として が表示されます。