SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

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

Silverlight/WPFで使える逆引きTips集
――ステータスバー機能

(12) StatuslBarコントロール

ダウンロード StatusBar_WPF_VB.zip (142.2 KB)
ダウンロード StatusBar_WPF_CS.zip (50.8 KB)

06.Caps Lock, Num Lockの状態を表示する

 ステータスバーにCapsLockキーやNumLockキーの状態を表示するには、ConsoleクラスのCapsLockプロパティNumberLockプロパティを使用します。

 下記は、タイマーを使用してCapsLockキーとNumLockキーの状態を監視し、ステータスバーに表示する例です。

Caps Lock, Num Lockの状態を表示する例
Caps Lock, Num Lockの状態を表示する例
XAMLの例
<DockPanel Name="DockPanel1">
    <StatusBar DockPanel.Dock="Bottom" Name="sbar">
        <StatusBar.ItemsPanel>
            <ItemsPanelTemplate>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="Auto"/>                            
                    </Grid.ColumnDefinitions>
                </Grid>
            </ItemsPanelTemplate>
        </StatusBar.ItemsPanel>
        <StatusBarItem>Ready</StatusBarItem>
        <Separator Grid.Column="1"/>
        <StatusBarItem Grid.Column="2" Name="Item2">CapsLock</StatusBarItem>
        <Separator Grid.Column="3"/>
        <StatusBarItem Grid.Column="4" Name="Item3">NumLock</StatusBarItem>
    </StatusBar>
    <TextBox></TextBox>
</DockPanel>
VBの例
Dim dispatcherTimer As New System.Windows.Threading.DispatcherTimer()

''' <summary>
''' 初期化処理
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub Window_Initialized(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Initialized
    'Caps LockとNum Lockの状態を監視するタイマーを作成する
    dispatcherTimer = New System.Windows.Threading.DispatcherTimer(System.Windows.Threading.DispatcherPriority.Normal)
    dispatcherTimer.Interval = New TimeSpan(0, 0, 1)
    AddHandler dispatcherTimer.Tick, AddressOf dispatcherTimer_Tick
    dispatcherTimer.Start()
End Sub

''' <summary>
''' Caps Lock, Num Lockの状態を更新する
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub dispatcherTimer_Tick(ByVal sender As Object, ByVal e As EventArgs)
    If Console.CapsLock = True Then
        Item2.Content = "CapsLock ON"
    Else
        Item2.Content = "CapsLock OFF"
    End If

    If Console.NumberLock = True Then
        Item3.Content = "Num Lock ON"
    Else
        Item3.Content = "Num Lock OFF"
    End If
End Sub
C#の例
System.Windows.Threading.DispatcherTimer dispatcherTimer;

public Window6()
{
    InitializeComponent();

    dispatcherTimer = new System.Windows.Threading.DispatcherTimer(System.Windows.Threading.DispatcherPriority.Normal);
    dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
    dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
    dispatcherTimer.Start();
}

/// <summary>
/// Caps Lock, Num Lockの状態を更新する
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void dispatcherTimer_Tick(object sender, EventArgs e)
{
    if (Console.CapsLock == true)
        Item2.Content = "CapsLock ON";
    else
        Item2.Content = "CapsLock OFF";

    if (Console.NumberLock == true)
        Item3.Content = "NumLock ON";
    else
        Item3.Content = "NumLock OFF";
}
ポイント

 CapsLockキーやNumLockキーの状態を参照するにはConsoleクラスを使用する。

 

07.プログレスバーを表示する

 ステータスバーにプログレスバーを表示するには、ProgressBarクラスを使用します。

 ProgressBarに関するTipsはこちらを参照して下さい。

プログレスバーを表示する例
プログレスバーを表示する例
XAMLの例
<DockPanel Name="DockPanel1">
    <StatusBar DockPanel.Dock="Bottom" Name="sbar">
        <StatusBar.ItemsPanel>
            <ItemsPanelTemplate>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
                </Grid>
            </ItemsPanelTemplate>
        </StatusBar.ItemsPanel>
        <StatusBarItem>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="Loading..." DockPanel.Dock="Left"/>
                <ProgressBar Minimum="0" Maximum="100" Value="50"  Height="15" Width="200"/>
            </StackPanel>
        </StatusBarItem>         
    </StatusBar>
    <TextBox></TextBox>
</DockPanel>
ポイント

 プログレスバーを表示するにはProgressBarクラスを使用する。

 

まとめ

 今回はStatusBarコントロールのTipsを紹介しました。項目の配置位置を設定するにはちょっとしたコツがいることに注意してください。

 最後にStatusBarとStatusBarItemのMSDNリンクを下記に示します。

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Silverlight/WPFで使える逆引きTips集連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

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

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5852 2011/04/07 14:00

イベント

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

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

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

メールバックナンバー