SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Silverlight/WPFで使える逆引きTips集

Silverlight/WPFで使える逆引きTips集
――プログレスバー機能

(9) ProgressBarコントロール

  • X ポスト
  • このエントリーをはてなブックマークに追加

03.進捗状況の表示方法を設定する

 進捗状況の表示方法は2つあります。

 1つは左から右に向かって緑で塗りつぶしていくパターン、もう1つは緑のマーカーが左から右へ向かって流れる動作を繰り替えし行うパターンです。

 この表示方法を設定するには IsIndeterminateプロパティを使用し、「緑のマーカーが左から右へ向かって流れる動作を繰り替えし行うパターン」の場合はTrueを設定します(既定値はFalseです)。

 下記は、IsIndeterminate プロパティを使用して表示方法を設定する例です。

進捗状況の表示方法を設定する例
進捗状況の表示方法を設定する例
XAMLの例
<Window.Triggers>
    <!-- WindowがロードされたらProgressBar1を進捗させる -->
    <EventTrigger RoutedEvent="Window.Loaded">
        <BeginStoryboard>
            <Storyboard TargetName="ProgressBar1" TargetProperty="Value">
                <DoubleAnimation From="0" To="100" Duration="0:0:20" />
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</Window.Triggers>
<StackPanel>
    <TextBlock Text="IsIndeterminate = False" Margin="5"/>
    <!-- IsIndeterminate = False -->
    <ProgressBar Name="ProgressBar1" 
                 VerticalAlignment="Top" HorizontalAlignment="Left" 
                 Margin="5,0,0,0" Height="16" Width="254" 
                 Minimum="0" Maximum="100" Value="0"
                 IsIndeterminate="False"/>
    <TextBlock Text="IsIndeterminate = True" Margin="5"/>
    <!-- IsIndeterminate = True -->
    <ProgressBar Name="ProgressBar2" 
                 VerticalAlignment="Top" HorizontalAlignment="Left" 
                 Margin="5,0,0,0" Height="16" Width="254" 
                 Minimum="0" Maximum="100" Value="0"
                 IsIndeterminate="True"/>
</StackPanel>
VBの例
Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
    '進捗状況の表示方法を設定する
    ProgressBar1.IsIndeterminate = False
    ProgressBar2.IsIndeterminate = True
End Sub
C#の例
private void Window_Loaded(object sender, RoutedEventArgs e)
{
    // 進捗状況の表示方法を設定する
    progressBar1.IsIndeterminate = false;
    progressBar2.IsIndeterminate = true;
}
ポイント

 進捗状況の表示方法を変更するにはIsIndeterminateプロパティを使用する。 

04.プログレスバー上に進捗率を表示する

 ProgressBar コントロールには進捗率を表示させるためのプロパティがありません。

 そこでGridを1つ準備して、 ProgressBarコントロールとTextBlockコントロールを重ねて置くことで、あたかもProgressBarコントロールにテキスト表示エリアがあるかのように見せることができます。

 このとき TextBlockコントロールをViewBoxに配置すると、Gridのサイズに合わせてフォントのサイズが自動で変わるようになります。

 下記はProgressBarにテキスト表示エリアを作成し、進捗率を表示する例です。

 VB.NETまたはC#のコードは、「02.進捗状況値の取得/設定をする」を参考にし、Worker_ProgressChangedメソッドのみ下記に示すように変更してください。

プログレスバー上に進捗率を表示する例
プログレスバー上に進捗率を表示する例
XAMLの例
<!-- テキスト表示エリアを持ったProgressBar -->
<Grid Margin="12,12,0,0" HorizontalAlignment="Left" Width="249" Height="34" VerticalAlignment="Top">
    <ProgressBar Name="ProgressBar1" 
                 Minimum="0" Maximum="100" Value="0" />
    <Viewbox>
        <TextBlock Name="TextBlock1" Text="0%" TextAlignment="Center"/>
    </Viewbox>
</Grid>

<Button Content="START" Height="23" HorizontalAlignment="Left" Margin="12,56,0,0" 
        Name="btnStart" VerticalAlignment="Top" Width="75" />
<Button Content="STOP" Height="23" HorizontalAlignment="Right" Margin="0,56,106,0" 
        Name="btnStop" VerticalAlignment="Top" Width="75" />
VBの例
' 現在値の更新
Private Sub Worker_ProgressChanged(ByVal sender As Object, 
    ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles Worker.ProgressChanged
    'プログレスバーの現在値を更新する
    ProgressBar1.Value = e.ProgressPercentage
    '進捗率を表示する
    TextBlock1.Text = ProgressBar1.Value.ToString() & "%"
End Sub
C#の例
// 現在値の更新
void Worker_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
{
    // プログレスバーの現在値を更新する
    progressBar1.Value = e.ProgressPercentage;
    // 進捗率を表示する
    textBlock1.Text = progressBar1.Value.ToString() + "%";
}
ポイント

 ProgressBar上にTextBlockコントロールを重ねることで、擬似的にテキスト表示エリアを作成する。 

次のページ
05.現在値がMaximum値に達したときにメッセージを表示する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Silverlight/WPFで使える逆引きTips集連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5758 2011/02/17 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング