SPREAD for WPF 4.0J - GcSpreadGrid
入力と編集
MESCIUS SPREAD for WPF 4.0J > 開発者ガイド > 編集 > 入力と編集

ユーザーがセルを編集するとき、既存の値を上書きする「入力」、および既存の値に追記または挿入する「編集」が可能です。ユーザーの編集の開始方法により、セルは「入力」または「編集」状態となります。既定では次のとおりです。

編集の開始方法 セルの状態 方向キー(※)の処理
アクティブセルにキーボードから入力 「入力」(上書き) アクティブセルの移動
セルをダブルクリック 「編集」(マウス位置に挿入) セル内でキャレットを移動
[F2] キーを押す 「編集」(末尾に追記) セル内でキャレットを移動

※上下左右の矢印キー、[Home]、[End] キーを表します。

この設定は変更できます。編集を開始したときのキャレットの位置はコントロールの EditCaretPosition プロパティで、方向キーの処理方法は ProcessNavigationKeys プロパティで設定します。また、セルの編集が開始されたタイミングで発生するコントロールの CellBeginEdit イベントを使用し、ユーザーの編集の開始方法にあわせて設定を変更することもできます。

なお、セルの編集操作で発生するイベントについては「セル型とイベント」を参照してください。

編集時のキャレット位置の制御

次のサンプルコードはユーザーがキーボードからの入力でセルを編集開始したとき、既存の値の末尾に追記し、方向キーはセル内でキャレットを端まで移動してからアクティブセルを移動するよう設定します。

XAML
コードのコピー
<sg:GcSpreadGrid CellBeginEdit="gcSpreadGrid1_CellBeginEdit"/>
C#
コードのコピー
private void gcSpreadGrid1_CellBeginEdit(object sender, SpreadCellBeginEditEventArgs e)
{
    if (e.BeginEditAction == SpreadBeginEditAction.CharInput)
    {
        e.EditCaretPosition = EditCaretPosition.End;
        e.ProcessNavigationKeys = ProcessNavigationKeys.ExitEditorAtEnds;
    }
}
Visual Basic
コードのコピー
Private Sub gcSpreadGrid1_CellBeginEdit(sender As Object, e As SpreadCellBeginEditEventArgs)
    If e.BeginEditAction = SpreadBeginEditAction.CharInput Then
        e.EditCaretPosition = EditCaretPosition.End
        e.ProcessNavigationKeys = ProcessNavigationKeys.ExitEditorAtEnds
    End If
End Sub

編集時に文字を全選択

セルが編集状態にたったときに、テキストを全選択するかどうかもCellBeginEdit イベントを使用して設定します。次のサンプルコードは、セルのダブルクリックまたは[F2]キー押下により編集状態になったとき、テキストを全選択します。

C#
コードのコピー
private void GcSpreadGrid1_CellBeginEdit(object sender, SpreadCellBeginEditEventArgs e)
{
    if( e.BeginEditAction == SpreadBeginEditAction.LeftDoubleClick || e.BeginEditAction == SpreadBeginEditAction.F2 )
    {
        e.EditCaretPosition = EditCaretPosition.SelectAll;
    }
}
Visual Basic
コードのコピー
Private Sub gcSpreadGrid1_CellBeginEdit(sender As Object, e As SpreadCellBeginEditEventArgs)
    If e.BeginEditAction = SpreadBeginEditAction.LeftDoubleClick Or e.BeginEditAction = SpreadBeginEditAction.F2 Then
            e.EditCaretPosition = EditCaretPosition.SelectAll
        End If
End Sub

関連トピック