ステータスバーにCapsLockキーやNumLockキーの状態を表示するには、ConsoleクラスのCapsLockプロパティ、NumberLockプロパティを使用します。
下記は、タイマーを使用して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";
}
