ステータスバーに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"; }