こんにちは。SPREAD for WPFを担当している高橋です。
今回も、Windows FormsやASP.NETとの共通機能でも、WPFでは設定方法が若干異なるという機能について紹介したいと思います。
SPREAD for Windows Forms 10.0JとSPREAD for ASP.NET 10.0Jでは、最終セルがアクティブのときにTabキーの押下で次のコントロールにフォーカス移動、また先頭セルがアクティブのときにShift+Tabキーの押下で前のコントロールに移動するという新機能が追加されました。
どちらもプロパティを設定することでこの動作を制御します。
実はこの機能、SPREAD for WPFでは搭載済みです。ただし、プロパティではなくコマンド機能を使用します。
WPFには、コマンドという概念があり、このコマンドを呼び出すことにより様々な処理を実行できます。代表的なコマンドの例として、[コピー][切り取り][貼り付け]といった動作があります。
コマンドとショートカットキーを関連付けると、そのキーが押されたときにコマンドが実行されます。[Ctrl+C][Ctrl+X][Ctrl+V]キー が押下されると、[コピー][切り取り][貼り付け]が実行されるといった具合です。
SPREAD for WPFにはよく利用される動作があらかじめコマンドとして用意されています。[コピー][切り取り][貼り付け]といった動作は、既定で[Ctrl+C][Ctrl+X][Ctrl+V]キーが割り当てられています。
本題の「次のセルに移動、最後のセルの場合は次のコントロールに移動」および「前のセルに移動、先頭のセルの場合は前のコントロールに移動」という動作ですが、SpreadNavigationCommandsクラスに「MoveNextThenControl/MovePreviousThenControl」というコマンドが用意されてます。このコマンドに[Tab]および[Shift+Tab]キーを割り当てることで、動作を実行することができます。
コマンドをキーに割り当てるには、.NET FrameworkのInputBinding クラスを使用します。
Visual Basic
GcSpreadGrid1.InputBindings.Add(New KeyBinding(GcSpreadGrid1.NavigationCommands.MoveNextThenControl, New KeyGesture(Key.Tab))) GcSpreadGrid1.InputBindings.Add(New KeyBinding(GcSpreadGrid1.NavigationCommands.MovePreviousThenControl, New KeyGesture(Key.Tab, ModifierKeys.Shift)))
C#
gcSpreadGrid1.InputBindings.Add(new KeyBinding(gcSpreadGrid1.NavigationCommands.MoveNextThenControl, new KeyGesture(Key.Tab))); gcSpreadGrid1.InputBindings.Add(new KeyBinding(gcSpreadGrid1.NavigationCommands.MovePreviousThenControl, new KeyGesture(Key.Tab, ModifierKeys.Shift)));
XAMLで設定することもできます。
XAML
<sg:GcSpreadGrid x:Name="gcSpreadGrid1"> <sg:GcSpreadGrid.InputBindings> <KeyBinding Key="Tab" Modifiers="Shift" Command="{Binding Path=NavigationCommands.MovePreviousThenControl, ElementName=gcSpreadGrid1}" /> <KeyBinding Key="Tab" Command="{Binding Path=NavigationCommands.MoveNextThenControl, ElementName=gcSpreadGrid1}"/> </sg:GcSpreadGrid.InputBindings> </sg:GcSpreadGrid>
SelectionUnitプロパティをRowやColumnに設定するなど、選択要素の単位を行や列にした場合のTabキー動作の実装方法や、別のコマンドの利用方法など、弊社Webサイトのナレッジベースでも公開しています。
よかったらこちらも是非ご参考にしてみてください。
SPREAD for WPFの機能を体感
.NET FrameworkのClick Once機能を利用したデモを公開しています。
Windows PCにWebサイトからインストールして、SPREAD for WPFの機能を実際にお試しいただけます。