通常のProgressBarコントロールは水平プログレスバーで、左側から右側にバーが伸びていきます。これに対して、下から上にバーが伸びていく垂直プログレスバーもあります。ここでは垂直プログレスバーを使用する方法を紹介します。
ただし、「Progress Bars」にあるガイドラインでは、垂直プログレスバーは使ってはいけないとされていることをご了承ください。
実はProgressBarコントロールのスタイルに「PBS_VERTICAL」を追加するだけで、簡単に垂直プログレスバーにできてしまいます。
以下のようなProgressBarクラスを継承したクラスを作成して、これをProgressBarコントロールの代わりに使えば、通常のProgressBarと同じように垂直プログレスバーを使用できます。
なおこのクラスをProgressBarコントロールの代わりに使う方法が分からないという場合は、こちらをご覧ください。
Imports System.Windows.Forms Imports System.Security.Permissions ''' <summary> ''' 垂直ProgressBarコントロールを表します。 ''' </summary> Public Class VerticalProgressBar Inherits ProgressBar Private PBS_VERTICAL As Integer = &H4 Protected Overrides ReadOnly Property CreateParams() As CreateParams <SecurityPermission(SecurityAction.Demand, _ Flags:=SecurityPermissionFlag.UnmanagedCode)> _ Get Dim cps As CreateParams = MyBase.CreateParams 'コントロールのスタイルにPBS_VERTICALを追加する cps.Style = cps.Style Or PBS_VERTICAL Return cps End Get End Property End Class
using System; using System.Windows.Forms; using System.Security.Permissions; /// <summary> /// 垂直ProgressBarコントロールを表します。 /// </summary> public class VerticalProgressBar : ProgressBar { private int PBS_VERTICAL = 0x0004; protected override CreateParams CreateParams { [SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)] get { CreateParams cps = base.CreateParams; //コントロールのスタイルにPBS_VERTICALを追加する cps.Style |= PBS_VERTICAL; return cps; } } }
補足:上記の垂直プログレスバーは、RightToLeftプロパティをYes、RightToLeftLayoutプロパティをTrueにしても、上から下にバーが伸びるようにはなりません。上から下にバーを伸ばしたい時は、プログレスバーを自分で描画する必要があります。プログレスバーを自分で描画する方法は、「ProgressBarの色を変える」で紹介しています。
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。