ReoGrid 在工作表上提供三个键盘事件,用于处理单元格内的按键操作。

命名空间

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

事件

事件事件参数描述
BeforeCellKeyDownBeforeCellKeyDownEventArgs在内置按键处理之前触发。设置 IsCancelled = true 以阻止默认行为
AfterCellKeyDownAfterCellKeyDownEventArgs在内置按键处理之后触发
CellKeyUpCellKeyDownEventArgs按键释放时触发

事件参数属性

CellKeyDownEventArgs

所有键盘事件参数的基类。

属性类型描述
KeyCodeKeyCode按下的键(包含修饰键标志)
CellCell发生按键事件的单元格
CellPositionCellPosition单元格位置

BeforeCellKeyDownEventArgs

继承自 CellKeyDownEventArgs

属性类型描述
IsCancelledbool设置为 true 以取消默认操作

KeyCode 枚举

KeyCode 枚举(标志)表示键盘按键。常用值:

描述
None无按键
Back退格键
TabTab 键
Enter回车键
EscapeEsc 键
Space空格键
PageUp上翻页
PageDown下翻页
EndEnd 键
HomeHome 键
LeftUpRightDown方向键
InsertInsert 键
DeleteDelete 键
D0D9数字键 0–9
AZ字母键
NumPad0NumPad9数字小键盘
F1F24功能键

修饰键标志

描述
ShiftShift 修饰键 (65536)
ControlCtrl 修饰键 (131072)
AltAlt 修饰键 (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 会触发(在编辑模式开始之前)。使用单元格编辑事件来处理编辑期间的输入。

相关主题

这篇文章对您有帮助吗?