作成日: 2021/06/01 最終更新日: 2021/06/01
文書種別
使用方法
詳細
RowColChangeイベントやSelChange内でRowやColプロパティを変更すると、再帰的にこれらのイベントが引き起こされるため、結果的に各イベントが多数発生することがあります。
RowColChangeイベントは、マウスまたはキーボードでのカレントセル移動のほか、コードでRow/Colプロパティが変更されたときにも発生します。そのため、RowColChangeイベント内で、Row/Colが変更されるようなコードを設定すると、それに起因するRowColChangeイベントが再度発生します。
また、SelChangeイベントは、選択範囲(Row、 Col、 RowSel、ColSelで指定)が変更された後に発生するため、Row/Colが変更された時だけでなく、マウスドラッグで選択範囲を広げ、カレントセルは変わらないような場合でも(RowSel/ColSelが変更される事で)発生するので、注意が必要です。
予期せずに、これらのイベントが多数発生するのを避けるには、同イベント内でのRow/Col(またはRowSel/ColSel)プロパティの変更を避け、可能であれば別のイベントを利用することをご検討ください。
例えば、特定セルの選択禁止を目的としてRowColChangeイベントで Row=-1 を設定する代わりに、BeforeRowColChangeイベントを利用して e.Cancel = True を設定します。
◎サンプルコード(VB)
RowColChangeイベントは、マウスまたはキーボードでのカレントセル移動のほか、コードでRow/Colプロパティが変更されたときにも発生します。そのため、RowColChangeイベント内で、Row/Colが変更されるようなコードを設定すると、それに起因するRowColChangeイベントが再度発生します。
また、SelChangeイベントは、選択範囲(Row、 Col、 RowSel、ColSelで指定)が変更された後に発生するため、Row/Colが変更された時だけでなく、マウスドラッグで選択範囲を広げ、カレントセルは変わらないような場合でも(RowSel/ColSelが変更される事で)発生するので、注意が必要です。
予期せずに、これらのイベントが多数発生するのを避けるには、同イベント内でのRow/Col(またはRowSel/ColSel)プロパティの変更を避け、可能であれば別のイベントを利用することをご検討ください。
例えば、特定セルの選択禁止を目的としてRowColChangeイベントで Row=-1 を設定する代わりに、BeforeRowColChangeイベントを利用して e.Cancel = True を設定します。
◎サンプルコード(VB)
Private Sub C1FlexGrid1_BeforeRowColChange(sender As Object, e As C1.Win.C1FlexGrid.RangeEventArgs) Handles C1FlexGrid1.BeforeRowColChange
' 3行3列目のセルの選択を禁止
If e.NewRange.r1 = 3 And e.NewRange.c1 = 3 Then
e.Cancel = True
End If
End Sub
◎サンプルコード(C#)
private void c1FlexGrid1_BeforeRowColChange(object sender, C1.Win.C1FlexGrid.RangeEventArgs e)
{
// 3行3列目のセルの選択を禁止
if ((e.NewRange.r1 == 3) && (e.NewRange.c1 == 3))
{
e.Cancel = true;
}
}