DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

垂直なProgressBarコントロールを使用する

通常のProgressBarコントロールは水平プログレスバーで、左側から右側にバーが伸びていきます。これに対して、下から上にバーが伸びていく垂直プログレスバーもあります。ここでは垂直プログレスバーを使用する方法を紹介します。

垂直プログレスバー

ただし、「Progress Bars」にあるガイドラインでは、垂直プログレスバーは使ってはいけないとされていることをご了承ください。

実はProgressBarコントロールのスタイルに「PBS_VERTICAL」を追加するだけで、簡単に垂直プログレスバーにできてしまいます。

以下のようなProgressBarクラスを継承したクラスを作成して、これをProgressBarコントロールの代わりに使えば、通常のProgressBarと同じように垂直プログレスバーを使用できます。

なおこのクラスをProgressBarコントロールの代わりに使う方法が分からないという場合は、こちらをご覧ください。

VB.NET
コードを隠すコードを選択
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
C#
コードを隠すコードを選択
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の色を変える」で紹介しています。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。