作成日: 2014/10/20 最終更新日: 2015/01/15
文書種別
不具合
状況
修正済み
詳細
データバインドしたグリッドで、1行め以外のセルをクリックして選択し、その後左上の固定セルをクリックしても、全セルが選択された状態になりません。また、同じく1行め以外のセルをクリックして選択し、その後列ヘッダをクリックしても、その列が選択された状態になりません。
どちらの場合も、2回クリックすると全セルまたは列が選択された状態になります。
どちらの場合も、2回クリックすると全セルまたは列が選択された状態になります。
回避方法
この問題はバージョン2.0.20143.18または4.0.20143.18で修正されました。
修正版の適用方法については、アップデートの方法を参照してください。
修正版を適用しない場合は、次の方法でも回避できます。
以下のように、MouseDownイベントでHitTestメソッドを使用してクリックしたセルの位置情報を取得し、左上の固定セルの場合には、RowSel/ColSelプロパティを使用してすべてのセルを選択状態にします。また、列ヘッダの場合には、SelectionModeプロパティを一時的にColumnRangeに設定して、列全体を選択状態にします。
◎サンプルコード(VB)
◎サンプルコード(C#)
修正版の適用方法については、アップデートの方法を参照してください。
修正版を適用しない場合は、次の方法でも回避できます。
以下のように、MouseDownイベントでHitTestメソッドを使用してクリックしたセルの位置情報を取得し、左上の固定セルの場合には、RowSel/ColSelプロパティを使用してすべてのセルを選択状態にします。また、列ヘッダの場合には、SelectionModeプロパティを一時的にColumnRangeに設定して、列全体を選択状態にします。
◎サンプルコード(VB)
Private Sub C1FlexGrid1_MouseDown(sender As Object, e As MouseEventArgs) Handles C1FlexGrid1.MouseDown
Dim hti As C1.Win.C1FlexGrid.HitTestInfo = C1FlexGrid1.HitTest()
If hti.Column = 0 And hti.Row = 0 Then
C1FlexGrid1.Row = 1
C1FlexGrid1.Col = 1
C1FlexGrid1.RowSel = C1FlexGrid1.Rows.Count - 1
C1FlexGrid1.ColSel = C1FlexGrid1.Cols.Count - 1
Else
If hti.Type = C1.Win.C1FlexGrid.HitTestTypeEnum.ColumnHeader Then
C1FlexGrid1.SelectionMode = C1.Win.C1FlexGrid.SelectionModeEnum.ColumnRange
Else
C1FlexGrid1.SelectionMode = C1.Win.C1FlexGrid.SelectionModeEnum.Default
End If
End If
End Sub
Dim hti As C1.Win.C1FlexGrid.HitTestInfo = C1FlexGrid1.HitTest()
If hti.Column = 0 And hti.Row = 0 Then
C1FlexGrid1.Row = 1
C1FlexGrid1.Col = 1
C1FlexGrid1.RowSel = C1FlexGrid1.Rows.Count - 1
C1FlexGrid1.ColSel = C1FlexGrid1.Cols.Count - 1
Else
If hti.Type = C1.Win.C1FlexGrid.HitTestTypeEnum.ColumnHeader Then
C1FlexGrid1.SelectionMode = C1.Win.C1FlexGrid.SelectionModeEnum.ColumnRange
Else
C1FlexGrid1.SelectionMode = C1.Win.C1FlexGrid.SelectionModeEnum.Default
End If
End If
End Sub
◎サンプルコード(C#)
private void c1FlexGrid1_MouseDown(object sender, MouseEventArgs e)
{
C1.Win.C1FlexGrid.HitTestInfo hti = c1FlexGrid1.HitTest();
if (hti.Column == 0 && hti.Row == 0)
{
c1FlexGrid1.Row = 1;
c1FlexGrid1.Col = 1;
c1FlexGrid1.RowSel = c1FlexGrid1.Rows.Count - 1;
c1FlexGrid1.ColSel = c1FlexGrid1.Cols.Count - 1;
}
else
{
if (hti.Type == C1.Win.C1FlexGrid.HitTestTypeEnum.ColumnHeader)
c1FlexGrid1.SelectionMode = C1.Win.C1FlexGrid.SelectionModeEnum.ColumnRange;
else
c1FlexGrid1.SelectionMode = C1.Win.C1FlexGrid.SelectionModeEnum.Default;
}
}
{
C1.Win.C1FlexGrid.HitTestInfo hti = c1FlexGrid1.HitTest();
if (hti.Column == 0 && hti.Row == 0)
{
c1FlexGrid1.Row = 1;
c1FlexGrid1.Col = 1;
c1FlexGrid1.RowSel = c1FlexGrid1.Rows.Count - 1;
c1FlexGrid1.ColSel = c1FlexGrid1.Cols.Count - 1;
}
else
{
if (hti.Type == C1.Win.C1FlexGrid.HitTestTypeEnum.ColumnHeader)
c1FlexGrid1.SelectionMode = C1.Win.C1FlexGrid.SelectionModeEnum.ColumnRange;
else
c1FlexGrid1.SelectionMode = C1.Win.C1FlexGrid.SelectionModeEnum.Default;
}
}
旧文書番号
81008