ReoGridは、セルとのマウス操作を処理するために、ワークシート上で5つのマウスイベントを提供しています。
名前空間
using unvell.ReoGrid;
using unvell.ReoGrid.Events;
using unvell.ReoGrid.Interaction;
イベント
| イベント | 説明 |
|---|---|
CellMouseDown | セル上でマウスボタンが押された時に発生します |
CellMouseUp | セル上でマウスボタンが離された時に発生します |
CellMouseMove | セル上でマウスが移動した時に発生します |
CellMouseEnter | マウスポインタがセルに入った時に発生します |
CellMouseLeave | マウスポインタがセルから出た時に発生します |
すべてのイベントはCellMouseEventArgsを使用します。
CellMouseEventArgsのプロパティ
| プロパティ | 型 | 説明 |
|---|---|---|
Cell | Cell | セルのインスタンス。セルにデータやスタイルが設定されていない場合はnullになる可能性があります |
CellPosition | CellPosition | セルのゼロベースの位置(常に利用可能) |
Buttons | MouseButtons | 押されているマウスボタン |
RelativePosition | Point | セルに対するマウスの相対位置 |
AbsolutePosition | Point | コントロールに対するマウスの相対位置 |
Clicks | int | クリック回数(ダブルクリック検出用) |
Delta | int | マウスホイールのデルタ値(ホイールイベントでのみ使用) |
Capture | bool | マウスをキャプチャするかどうかの取得・設定 |
CursorStyle | CursorStyle | カーソルスタイルの取得・設定 |
IsCancelled | bool | trueに設定するとReoGridのデフォルト操作をキャンセルします |
Worksheet | Worksheet | ワークシートのインスタンス |
注意:
Cellプロパティは、セルにデータやスタイルがない場合はnullになる可能性があります。有効なセルインスタンスを確実に取得するには、sheet.CreateAndGetCell(e.CellPosition)を使用してください。
CursorStyle列挙型
| 値 | 説明 |
|---|---|
PlatformDefault | デフォルトカーソル |
Hand | ハンドカーソル |
Selection | 範囲選択カーソル |
FullRowSelect | 行全体セレクター |
FullColumnSelect | 列全体セレクター |
EntireSheet | シート全体セレクター |
Move | オブジェクト移動 |
Copy | オブジェクトコピー |
ChangeColumnWidth | 列幅リサイズ |
ChangeRowHeight | 行高さリサイズ |
ResizeHorizontal | 水平リサイズ |
ResizeVertical | 垂直リサイズ |
Busy | ビジー/待機中 |
Cross | 十字カーソル |
使用例
セルマウスダウン
sheet.CellMouseDown += (s, e) =>
{
// Safe: always use CellPosition, not Cell (which may be null)
var cell = sheet.CreateAndGetCell(e.CellPosition);
Console.WriteLine($"Clicked cell {e.CellPosition}: {cell.Data}");
};
セルマウスアップ
sheet.CellMouseUp += (s, e) =>
{
Console.WriteLine($"Mouse released at {e.CellPosition}, button: {e.Buttons}");
};
セルマウス進入/退出
sheet.CellMouseEnter += (s, e) =>
{
// Highlight on hover
if (e.Cell != null)
{
e.Cell.Style.BackColor = SolidColor.LightYellow;
}
};
sheet.CellMouseLeave += (s, e) =>
{
if (e.Cell != null)
{
sheet.RemoveRangeStyles(e.CellPosition, PlainStyleFlag.BackColor);
}
};
デフォルト動作のキャンセル
sheet.CellMouseDown += (s, e) =>
{
if (e.CellPosition.Col == 0)
{
// Prevent selection on first column
e.IsCancelled = true;
}
};
カーソルスタイルの変更
sheet.CellMouseMove += (s, e) =>
{
if (e.Cell?.Data != null)
{
e.CursorStyle = CursorStyle.Hand;
}
};
ダブルクリックの検出
sheet.CellMouseDown += (s, e) =>
{
if (e.Clicks == 2)
{
Console.WriteLine($"Double-clicked on {e.CellPosition}");
}
};