SPREAD for WPF 4.0J - GcSpreadGrid
ショートカットキーとコマンド
MESCIUS SPREAD for WPF 4.0J > 開発者ガイド > キーボード操作 > ショートカットキーとコマンド

コントロールは、キーボード操作の対象となる処理を WPF のコマンドとして提供します。コマンドに任意のキーボード ショートカットを関連付けることにより、コントロールのキーボード操作をカスタマイズできます。

コマンドの設定は、キーの既定の操作を上書きします。コマンドが関連付けられたキーの既定の操作は無効になります。つまり、[Enter] キーにセルの編集を開始するコマンドを関連付けた場合、既定操作であるアクティブ セルの次の行への移動は無効になります。コントロールに設定された既定の操作については「コマンド一覧」を参照してください。

キーの割り当て

コマンドとショートカットキーの関連付けは、コントロールの InputBindings プロパティに KeyBinding オブジェクトを設定します。

以下に、いくつかのショートカットキーとコマンドを関連付ける例を、XAMLコードとコードビハインドの両方のサンプルコードを使用して紹介します。

次のサンプルコードは、[Enter] キーでアクティブセルを右方向に移動します。

XAML
コードのコピー
<sg:GcSpreadGrid Name="gcSpreadGrid1">
    <sg:GcSpreadGrid.InputBindings>
        <KeyBinding Key="Enter" Command="{Binding Path=NavigationCommands.MoveRight, ElementName=gcSpreadGrid1}" />
    </sg:GcSpreadGrid.InputBindings>
</sg:GcSpreadGrid>
C#
コードのコピー
gcSpreadGrid1.InputBindings.Add(new KeyBinding(gcSpreadGrid1.NavigationCommands.MoveRight, new KeyGesture(Key.Enter)));
Visual Basic
コードのコピー
GcSpreadGrid1.InputBindings.Add(New KeyBinding(GcSpreadGrid1.NavigationCommands.MoveRight, New KeyGesture(Key.Enter)))

次のサンプルコードは、[Ctrl] + [Shift] + [Enter] キーでセルの編集を開始します。

XAML
コードのコピー
<sg:GcSpreadGrid Name="gcSpreadGrid1">
    <sg:GcSpreadGrid.InputBindings>               
        <KeyBinding Key="Enter" Modifiers="Ctrl+Shift" Command="{Binding Path=EditCommands.BeginEdit, ElementName=gcSpreadGrid1}" />
    </sg:GcSpreadGrid.InputBindings>
</sg:GcSpreadGrid>
C#
コードのコピー
gcSpreadGrid1.InputBindings.Add(new KeyBinding(gcSpreadGrid1.EditCommands.BeginEdit, new KeyGesture(Key.Enter, ModifierKeys.Control | ModifierKeys.Shift)));
Visual Basic
コードのコピー
GcSpreadGrid1.InputBindings.Add(New KeyBinding(GcSpreadGrid1.EditCommands.BeginEdit, New KeyGesture(Key.Enter, ModifierKeys.Control Or ModifierKeys.Shift)))

次のサンプルコードは、[Tab] キーで次のセルへ移動し、最後のセルの場合は次のコントロールに移動します。

XAML
コードのコピー
<sg:GcSpreadGrid Name="gcSpreadGrid1">
    <sg:GcSpreadGrid.InputBindings>               
        <KeyBinding Key="Tab" Command="{Binding Path=NavigationCommands.MoveNextThenControl, ElementName=gcSpreadGrid1}" />
    </sg:GcSpreadGrid.InputBindings>
</sg:GcSpreadGrid>
C#
コードのコピー
gcSpreadGrid1.InputBindings.Add(new KeyBinding(gcSpreadGrid1.NavigationCommands.MoveNextThenControl, new KeyGesture(Key.Tab)));
Visual Basic
コードのコピー
GcSpreadGrid1.InputBindings.Add(New KeyBinding(GcSpreadGrid1.NavigationCommands.MoveNextThenControl, New KeyGesture(Key.Tab)))

既定のコマンドを無効にする

既定でショートカットキーに関連付けられているコマンドを無効にするには、ショートカットキーに ApplicationCommands クラスの NotACommand を割り当てます。

次のサンプルコードは、既定の貼り付けコマンドが割り当てられている、[Ctrl] + [V] キーを無効にします。

XAML
コードのコピー
<sg:GcSpreadGrid Name="gcSpreadGrid1">
    <sg:GcSpreadGrid.InputBindings>               
        <KeyBinding Key="V" Modifiers="Ctrl" Command="{Binding Path=ApplicationCommands.NotACommand, ElementName=gcSpreadGrid1}" />
    </sg:GcSpreadGrid.InputBindings>
</sg:GcSpreadGrid>
C#
コードのコピー
gcSpreadGrid1.InputBindings.Add(new InputBinding(ApplicationCommands.NotACommand, new KeyGesture(Key.V, ModifierKeys.Control)));
Visual Basic
コードのコピー
GcSpreadGrid1.InputBindings.Add(New InputBinding(ApplicationCommands.NotACommand, New KeyGesture(Key.V, ModifierKeys.Control)))

編集中のセルにコマンドを割り当て

コントロールの EditElementShowing  イベントを使用すると、編集中のセルに対してショートカットキーと編集コマンドを関連付けることも可能です。

次のサンプルコードは、複数行入力が許可されている標準型セルに [Shift] + [Enter] および [Ctrl] + [Enter] キーで改行を入力します。

C#
コードのコピー
void gcSpreadGrid1_EditElementShowing(object sender, GrapeCity.Windows.SpreadGrid.EditElementShowingEventArgs e)
{
    if (e.EditElement is GrapeCity.Windows.SpreadGrid.Editors.GeneralEditElement)
    {
        e.EditElement.InputBindings.Add(new InputBinding(EditingCommands.EnterLineBreak, new KeyGesture(Key.Return, ModifierKeys.Control)));
        e.EditElement.InputBindings.Add(new InputBinding(EditingCommands.EnterLineBreak, new KeyGesture(Key.Return, ModifierKeys.Shift)));
    }
}
Visual Basic
コードのコピー
Private Sub GcSpreadGrid1_EditElementShowing(sender As Object, e As GrapeCity.Windows.SpreadGrid.EditElementShowingEventArgs) Handles GcSpreadGrid1.EditElementShowing
    If TypeOf e.EditElement Is GrapeCity.Windows.SpreadGrid.Editors.GeneralEditElement Then
        e.EditElement.InputBindings.Add(New InputBinding(EditingCommands.EnterLineBreak, New KeyGesture(Key.Return, ModifierKeys.Control)))
        e.EditElement.InputBindings.Add(New InputBinding(EditingCommands.EnterLineBreak, New KeyGesture(Key.Return, ModifierKeys.Shift)))
    End If
End Sub

 

関連トピック