2

完全に機能するプログレスバーを作成しました。最近パーセンテージを追加しましたが、進行状況バーの上にラベルを表示したいと思います。

そのようです:

ここに画像の説明を入力

ご覧のとおり、唯一の問題は、背景が透明でないことです。持っているにもかかわらず:

lblPercentage.BackColor = Color.Transparent

フォームの読み込み時...これに対してできることはありますか?

4

2 に答える 2

3

透明な 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プログレス バーの基本クラスとして使用します。これにより、デザイナーでラベルを配置できます。
于 2013-01-09T18:12:52.073 に答える
1

ここでは、進行状況バーを透明にしました。つまり、進行状況バーに対してのみ透明になり、進行状況バーの後ろにフォームがあるため、フォームが表示されます。透過効果が最上位ウィンドウに相対的であることは Windows の制限であり、積み重ね効果は機能しません。常にform背景として が表示されます。

于 2013-01-09T17:48:19.657 に答える