作成日: 2026/03/04 最終更新日: 2026/03/04
文書種別
使用方法
詳細
13.0Jでは列ヘッダセクションと列フッタセクションに配置したセルの編集をユーザーに許可できます。この機能を有効にするにあたって、既存のコードが列ヘッダや列フッタで動作することを考慮する必要があります。
最も発生しやすい問題は、イベントの引数e.RowIndexが列ヘッダセクションや列フッタセクションに適合しないことです。この場合、e.Scopeでセクションの種類を識別し、e.RowIndexの代わりにe.SectionIndexを使用します。e.CellIndexやe.CellNameは共通です。
具体的なコーディングは次のようになります。
[Visual Basic]
Imports GrapeCity.Win.MultiRow
' 次のコードは、編集可能なセルがいずれのセクションに配置されている場合でも
' 編集された値を表示できます。
Private Sub GcMultiRow1_CellEditedFormattedValueChanged(ByVal sender As System.Object, ByVal e As GrapeCity.Win.MultiRow.CellEditedFormattedValueChangedEventArgs) Handles GcMultiRow1.CellEditedFormattedValueChanged
Dim gcMultiRow As GcMultiRow = TryCast(sender, GcMultiRow)
Dim currentCell As Cell = Nothing
Select Case e.Scope
Case CellScope.ColumnHeader
' 列ヘッダセクションの場合
currentCell = gcMultiRow.ColumnHeaders(e.SectionIndex).Cells(e.CellIndex)
Case CellScope.Row
' 行の場合
currentCell = gcMultiRow.Rows(e.RowIndex).Cells(e.CellIndex)
Case CellScope.ColumnFooter
' 列フッタセクションの場合
currentCell = gcMultiRow.ColumnFooters(e.SectionIndex).Cells(e.CellIndex)
End Select
If currentCell IsNot Nothing AndAlso currentCell.EditedFormattedValue IsNot Nothing Then
Console.WriteLine(currentCell.EditedFormattedValue)
End If
End Sub
[C#]
using GrapeCity.Win.MultiRow;
// 次のコードは、編集可能なセルがいずれのセクションに配置されている場合でも
// 編集された値を表示できます。
private void gcMultiRow1_CellEditedFormattedValueChanged(object sender, CellEditedFormattedValueChangedEventArgs e)
{
GcMultiRow gcMultiRow = sender as GcMultiRow;
Cell currentCell = null;
switch (e.Scope)
{
case CellScope.ColumnHeader:
// 列ヘッダセクションの場合
currentCell = gcMultiRow.ColumnHeaders[e.SectionIndex].Cells[e.CellIndex];
break;
case CellScope.Row:
// 行の場合
currentCell = gcMultiRow.Rows[e.RowIndex].Cells[e.CellIndex];
break;
case CellScope.ColumnFooter:
// 列フッタセクションの場合
currentCell = gcMultiRow.ColumnFooters[e.SectionIndex].Cells[e.CellIndex];
break;
}
if (currentCell != null && currentCell.EditedFormattedValue != null)
Console.WriteLine(currentCell.EditedFormattedValue);
}