ReoGridは、セル内でのキー押下を処理するために、ワークシート上で3つのキーボードイベントを提供しています。
名前空間
using unvell.ReoGrid;
using unvell.ReoGrid.Events;
using unvell.ReoGrid.Interaction;
イベント
| イベント | EventArgs | 説明 |
|---|---|---|
BeforeCellKeyDown | BeforeCellKeyDownEventArgs | 組み込みキー処理の前に発生します。IsCancelled = trueでデフォルト動作を抑制します |
AfterCellKeyDown | AfterCellKeyDownEventArgs | 組み込みキー処理の後に発生します |
CellKeyUp | CellKeyDownEventArgs | キーが離された時に発生します |
EventArgsのプロパティ
CellKeyDownEventArgs
すべてのキーボードイベント引数の基底クラスです。
| プロパティ | 型 | 説明 |
|---|---|---|
KeyCode | KeyCode | 押されたキー(修飾キーフラグを含む) |
Cell | Cell | キーイベントが発生したセル |
CellPosition | CellPosition | セルの位置 |
BeforeCellKeyDownEventArgs
CellKeyDownEventArgsを拡張します。
| プロパティ | 型 | 説明 |
|---|---|---|
IsCancelled | bool | trueに設定するとデフォルト操作をキャンセルします |
KeyCode列挙型
KeyCode列挙型(フラグ)はキーボードのキーを表します。主な値は以下の通りです。
| 値 | 説明 |
|---|---|
None | キーなし |
Back | Backspace |
Tab | Tab |
Enter | Enter |
Escape | Escape |
Space | スペースバー |
PageUp | Page Up |
PageDown | Page Down |
End | End |
Home | Home |
Left, Up, Right, Down | 矢印キー |
Insert | Insert |
Delete | Delete |
D0〜D9 | 数字キー0〜9 |
A〜Z | 文字キー |
NumPad0〜NumPad9 | テンキー |
F1〜F24 | ファンクションキー |
修飾キーフラグ
| 値 | 説明 |
|---|---|
Shift | Shift修飾キー (65536) |
Control | Ctrl修飾キー (131072) |
Alt | Alt修飾キー (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のみが(編集モード開始前に)発生します。編集中の入力を処理するには、セル編集イベントを使用してください。