[Tips][ProgressBar] バースタイルがMarquee時のアニメーションスピードを設定する

ProgressBarコントロールのスタイルがMarqueeに設定されている場合は、進捗はブロックが流れるアニメーションで表されます。

このアニメーションスピードはMarqueeAnimationSpeedプロパティ(単位mSec)で変更することができます。

下記は、Marqueeのアニメーションスピードを変更する例です。

VBの例

' フォームロード時の処理
Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'バースタイルをMarqueeにする
    ProgressBar1.Style = ProgressBarStyle.Marquee
    ProgressBar2.Style = ProgressBarStyle.Marquee

    '★★★アニメーションスピードの設定(単位mSec)★★★
    ProgressBar1.MarqueeAnimationSpeed = 100
    ProgressBar2.MarqueeAnimationSpeed = 200
End Sub

C#の例

// フォームロード時の処理
private void Form4_Load(object sender, EventArgs e)
{
    // バースタイルをMarqueeにする
    progressBar1.Style = ProgressBarStyle.Marquee;
    progressBar2.Style = ProgressBarStyle.Marquee;

    // ★★★アニメーションスピードの設定(単位mSec)★★★
    progressBar1.MarqueeAnimationSpeed = 100;
    progressBar2.MarqueeAnimationSpeed = 200;
}

[Tips][ProgressBar] バーのスタイルを変更する

ProgressBarコントロールでは、バーのスタイルを変更することができます。

バーのスタイルは、StyleプロパティProgressBarStyle列挙体の値を指定します。

ProgressBarStyle列挙体
メンバ名 説明
Blocks 分割されたブロックの数を増加させていくことで進行状況を示す
Continuous バーのサイズを滑らかに連続的に増加させていくことで進行状況を示す
Marquee ProgressBar の上を絶え間なくブロックがスクロールすることで進行状況を示す

Marqueeに設定した場合は、値を進捗させるPerformStepメソッドを使用できないことに注意してください。

下記はプログレスバーにスタイルを設定する例です。

Windows 7の場合はスタイルがBlocksとContinuousの区別が付きません。

Windows XPでクラシックスタイルにしている場合は、BlocksとContinuousで違いがあることがわかります。


VBの例

' フォームロード時の処理
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    '★★★バーのスタイルを設定する★★★
    ProgressBar1.Style = ProgressBarStyle.Blocks
    ProgressBar2.Style = ProgressBarStyle.Continuous
    ProgressBar3.Style = ProgressBarStyle.Marquee

    'プログレスバーの値を初期化
    ProgressBar1.Value = 0
    ProgressBar2.Value = 0
    ProgressBar3.Value = 0
End Sub

' [Do Something]ボタンクリック時の処理
Private Sub btnDoSomething_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDoSomething.Click
    For I As Integer = 1 To 100
        Application.DoEvents()

        '200mSec スリープ
        System.Threading.Thread.Sleep(200)

        '値を進捗させる
        ProgressBar1.PerformStep()
        ProgressBar2.PerformStep()
        '***Marqueeに設定した場合はPerformStepは使用できない***
        'ProgressBar3.PerformStep()
    Next
End Sub

C#の例

// フォームロード時の処理
private void Form3_Load(object sender, EventArgs e)
{
    // ★★★バーのスタイルを設定する★★★
    progressBar1.Style = ProgressBarStyle.Blocks;
    progressBar2.Style = ProgressBarStyle.Continuous;
    progressBar3.Style = ProgressBarStyle.Marquee;

    // プログレスバーの値を初期化
    progressBar1.Value = 0;
    progressBar2.Value = 0;
    progressBar3.Value = 0;
}

/ [Do Something]ボタンクリック時の処理
private void btnDoSomething_Click(object sender, EventArgs e)
{
    for (int i = 0; i < 100; i++)
    {
        Application.DoEvents();
        // 200mSec スリープ
        System.Threading.Thread.Sleep(100);

        // 値を進捗させる
        progressBar1.PerformStep();
        progressBar2.PerformStep();

        // ***Marqueeに設定した場合はPerformStepは使用できない***
        // progressBar3.PerformStep()
    }
}

[Tips][ProgressBar] 進捗範囲の最小値と最大値を設定する

ProgressBarコントロールは進捗の範囲である最小値と最大値を設定することができます。

最小値はMimnimumプロパティに、最大値はMaximumプロパティに設定します。

下記は、進捗範囲の最小値をと最大値を設定する例です。

VBの例

' [Do Something]ボタンクリック時の処理
Private Sub btnDoSomething_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDoSomething.Click
    'プログレスバーの値を初期化
    ProgressBar1.Value = 0

    '★★★最初値と最大値を設定する★★★
    ProgressBar1.Minimum = 0
    ProgressBar1.Maximum = 50

    For I As Integer = 1 To 50
        Application.DoEvents()

        '200mSec スリープ
        System.Threading.Thread.Sleep(200)

        '値を進捗させる
        ProgressBar1.PerformStep()
    Next
End Sub

C#の例

// [Do Something]ボタンクリック時の処理
private void btnDoSomething_Click(object sender, EventArgs e)
{
    // プログレスバーの値を初期化
    progressBar1.Value = 0;

    // ★★★最初値と最大値を設定する★★★
    progressBar1.Minimum = 0;
    progressBar1.Maximum = 50;

    for (int i = 0; i < 50; i++)
    {
        Application.DoEvents();
        // 200mSec スリープ
        System.Threading.Thread.Sleep(200);

        // 値を進捗させる
        progressBar1.PerformStep();
    }
}