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

スポンサーリンク

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

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

CapsLockキーとNumLockキーの状態を表示する例

 

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";
}
タイトルとURLをコピーしました