Windows Vista以降では、ProgressBarの値を増やした時はバーが徐々に伸びていきます。しかし、ProgressBarの値を減らした時はバーが一気に縮みます。ここでは、ProgressBarの値を減らした時でもバーが徐々に縮むようなアニメーション表示がされるようにする方法を紹介します。
バーが徐々に縮むようにするには、プログレスバーコントロールのスタイルに「PBS_SMOOTHREVERSE」を追加します。そのためには、ProgressBarクラスを継承したクラスを作成して、CreateParamsメソッドをオーバーライドします。そして、そのクラスをProgressBarコントロールの代わりに使用するようにします。
以下にその例を示します。もしこのクラスをProgressBarコントロールの代わりに使用する方法が分からないという場合は、こちらをご覧ください。
Imports System.Windows.Forms Imports System.Security.Permissions ''' <summary> ''' バーが縮む時も徐々に縮むProgressBarコントロールを表します。 ''' </summary> Public Class SmoothProgressBar Inherits ProgressBar Private PBS_SMOOTHREVERSE As Integer = &H10 Protected Overrides ReadOnly Property CreateParams() As CreateParams <SecurityPermission(SecurityAction.Demand, _ Flags:=SecurityPermissionFlag.UnmanagedCode)> _ Get Dim cps As CreateParams = MyBase.CreateParams 'コントロールのスタイルにPBS_SMOOTHREVERSEを追加する cps.Style = cps.Style Or PBS_SMOOTHREVERSE Return cps End Get End Property End Class
using System; using System.Windows.Forms; using System.Security.Permissions; /// <summary> /// バーが縮む時も徐々に縮むProgressBarコントロールを表します。 /// </summary> public class SmoothProgressBar : ProgressBar { private int PBS_SMOOTHREVERSE = 0x0010; protected override CreateParams CreateParams { [SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)] get { CreateParams cps = base.CreateParams; //コントロールのスタイルにPBS_SMOOTHREVERSEを追加する cps.Style |= PBS_SMOOTHREVERSE; return cps; } } }
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。