ReoGrid 在工作表上提供三个键盘事件,用于处理单元格内的按键操作。
命名空间
using unvell.ReoGrid;
using unvell.ReoGrid.Events;
using unvell.ReoGrid.Interaction;
事件
| 事件 | 事件参数 | 描述 |
|---|---|---|
BeforeCellKeyDown | BeforeCellKeyDownEventArgs | 在内置按键处理之前触发。设置 IsCancelled = true 以阻止默认行为 |
AfterCellKeyDown | AfterCellKeyDownEventArgs | 在内置按键处理之后触发 |
CellKeyUp | CellKeyDownEventArgs | 按键释放时触发 |
事件参数属性
CellKeyDownEventArgs
所有键盘事件参数的基类。
| 属性 | 类型 | 描述 |
|---|---|---|
KeyCode | KeyCode | 按下的键(包含修饰键标志) |
Cell | Cell | 发生按键事件的单元格 |
CellPosition | CellPosition | 单元格位置 |
BeforeCellKeyDownEventArgs
继承自 CellKeyDownEventArgs。
| 属性 | 类型 | 描述 |
|---|---|---|
IsCancelled | bool | 设置为 true 以取消默认操作 |
KeyCode 枚举
KeyCode 枚举(标志)表示键盘按键。常用值:
| 值 | 描述 |
|---|---|
None | 无按键 |
Back | 退格键 |
Tab | Tab 键 |
Enter | 回车键 |
Escape | Esc 键 |
Space | 空格键 |
PageUp | 上翻页 |
PageDown | 下翻页 |
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 | 用于提取修饰键的位掩码 |
使用按位与检查修饰键:
if ((e.KeyCode & KeyCode.Control) == KeyCode.Control)
{
// Ctrl 键被按住
}
示例
取消默认按键行为
阻止 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
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 会触发(在编辑模式开始之前)。使用单元格编辑事件来处理编辑期间的输入。