CellValueChanging/CellValueChangedイベントで取得するRowインデックスの値が不正になる

文書番号 : 41405     文書種別 : 既知の問題     登録日 : 2017/11/06     最終更新日 : 2018/01/29
文書を印刷する
対象製品
SPREAD for WPF 2.0J
ステータス
現象確認済み
詳細
InsertUnboundRowメソッドで任意の場所に行を挿入した場合、CellValueChangingイベントおよびCellValueChangedイベントで取得するRowインデックスの値が不正になります。

例えば、2行のGcSpreadGridに対して、InsertUnboundRowメソッドで先頭に1行追加します。次に、追加した先頭行の任意のセルを編集します。この際、CellValueChanging/CellValueChangedイベントで取得するe.Rowの値が「2」となります。
※この場合、正しい値は、先頭行を表す「0」です。
回避方法
ActiveCellPosition.Rowを使って、Rowインデックスの値を参照します。
※ただし、こちらの方法は、セルに直接入力して値を変更した場合および、ペーストを行った場合にのみ有効です。コード処理で値をセットした場合には、ActiveCellPositionの位置がずれるため、対処することができません。

◎サンプルコード(VB.NET)
Private Sub gcSpreadGrid1_CellValueChanged(sender As Object, e As CellValueChangedEventArgs) Handles gcSpreadGrid1.CellValueChanged
  gcSpreadGrid1.Cells(gcSpreadGrid1.ActiveCellPosition.Row, gcSpreadGrid1.ActiveCellPosition.Column).Background = System.Windows.Media.Brushes.LightBlue
End Sub

◎サンプルコード(C#)
private void gcSpreadGrid1_CellValueChanged(object sender, GrapeCity.Windows.SpreadGrid.CellValueChangedEventArgs e)
{
  gcSpreadGrid1.Cells[gcSpreadGrid1.ActiveCellPosition.Row, gcSpreadGrid1.ActiveCellPosition.Column].Background = System.Windows.Media.Brushes.LightBlue;
}