キーボードイベント

ReoGridは、セル内でのキー押下を処理するために、ワークシート上で3つのキーボードイベントを提供しています。

名前空間

using unvell.ReoGrid;
using unvell.ReoGrid.Events;
using unvell.ReoGrid.Interaction;

イベント

イベントEventArgs説明
BeforeCellKeyDownBeforeCellKeyDownEventArgs組み込みキー処理の前に発生します。IsCancelled = trueでデフォルト動作を抑制します
AfterCellKeyDownAfterCellKeyDownEventArgs組み込みキー処理の後に発生します
CellKeyUpCellKeyDownEventArgsキーが離された時に発生します

EventArgsのプロパティ

CellKeyDownEventArgs

すべてのキーボードイベント引数の基底クラスです。

プロパティ説明
KeyCodeKeyCode押されたキー(修飾キーフラグを含む)
CellCellキーイベントが発生したセル
CellPositionCellPositionセルの位置

BeforeCellKeyDownEventArgs

CellKeyDownEventArgsを拡張します。

プロパティ説明
IsCancelledbooltrueに設定するとデフォルト操作をキャンセルします

KeyCode列挙型

KeyCode列挙型(フラグ)はキーボードのキーを表します。主な値は以下の通りです。

説明
Noneキーなし
BackBackspace
TabTab
EnterEnter
EscapeEscape
Spaceスペースバー
PageUpPage Up
PageDownPage Down
EndEnd
HomeHome
Left, Up, Right, Down矢印キー
InsertInsert
DeleteDelete
D0D9数字キー0〜9
AZ文字キー
NumPad0NumPad9テンキー
F1F24ファンクションキー

修飾キーフラグ

説明
ShiftShift修飾キー (65536)
ControlCtrl修飾キー (131072)
AltAlt修飾キー (262144)
Modifiers修飾キーを抽出するビットマスク

修飾キーはビット演算ANDで確認します。

if ((e.KeyCode & KeyCode.Control) == KeyCode.Control)
{
    // Ctrl is held
}

使用例

デフォルトのキー動作をキャンセルする

Enterキーによる選択移動を防止します。

sheet.BeforeCellKeyDown += (s, e) =>
{
    if (e.KeyCode == KeyCode.Enter)
    {
        e.IsCancelled = true;
    }
};

キーの組み合わせを検出する

sheet.BeforeCellKeyDown += (s, e) =>
{
    if (e.KeyCode == (KeyCode.Control | KeyCode.S))
    {
        // Ctrl+S pressed
        SaveWorkbook();
        e.IsCancelled = true;
    }
};

キーリリースを処理する

sheet.CellKeyUp += (s, e) =>
{
    Console.WriteLine($"Key released: {e.KeyCode} at cell {e.CellPosition}");
};

キーダウン後の処理

sheet.AfterCellKeyDown += (s, e) =>
{
    if (e.KeyCode == KeyCode.Delete)
    {
        Console.WriteLine($"Cell {e.CellPosition} content cleared");
    }
};

備考

キーボードイベントは、キー押下によってセルが編集モードに入る場合には発生しません。文字キー(A〜Z、0〜9、記号)は通常、編集可能なセルで編集モードをトリガーします。その場合、BeforeCellKeyDownのみが(編集モード開始前に)発生します。編集中の入力を処理するには、セル編集イベントを使用してください。

関連トピック


ページの内容は役に立ちましたか?