作成日: 2019/12/17 最終更新日: 2020/04/30
文書種別
不具合
状況
修正済み
詳細
アクティブセルが存在する行または列をRowCountプロパティを0にするなどして一度削除し、その後で復元すると、セルの移動時に移動元のチェックボックス型セル上で再描画が正しく行われずフォーカス枠が残る場合があります。
【再現手順】
1.新規作成したプロジェクトのForm1にFpSpreadとButton1、Button2を貼り付けます。
2.下記のサンプルコードを記述します。
3.プロジェクトを実行し、3行目を選択状態にします。
4.Button1を押下します。
5.Button2を押下します。
6.3行目のチェックボックスをクリックします。
--1行目にフォーカス枠が残ります。
■サンプルコード(VB.NET)
【再現手順】
1.新規作成したプロジェクトのForm1にFpSpreadとButton1、Button2を貼り付けます。
2.下記のサンプルコードを記述します。
3.プロジェクトを実行し、3行目を選択状態にします。
4.Button1を押下します。
5.Button2を押下します。
6.3行目のチェックボックスをクリックします。
--1行目にフォーカス枠が残ります。
■サンプルコード(VB.NET)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
FpSpread1.ActiveSheet.DataSource = CreateData(False)
End Sub
Private Function CreateData(empty As Boolean) As DataTable
' データテーブルの作成
Dim dt As New DataTable("Test")
dt.Columns.Add("ColA", GetType(Boolean))
dt.Columns.Add("ColB", GetType(String))
' データの追加
If Not empty Then
For i = 0 To 4
dt.Rows.Add(False, String.Empty)
Next
End If
dt.AcceptChanges()
Return dt
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' データのクリア
FpSpread1.ActiveSheet.DataSource = CreateData(True)
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
' データの設定
FpSpread1.ActiveSheet.DataSource = CreateData(False)
End Sub
FpSpread1.ActiveSheet.DataSource = CreateData(False)
End Sub
Private Function CreateData(empty As Boolean) As DataTable
' データテーブルの作成
Dim dt As New DataTable("Test")
dt.Columns.Add("ColA", GetType(Boolean))
dt.Columns.Add("ColB", GetType(String))
' データの追加
If Not empty Then
For i = 0 To 4
dt.Rows.Add(False, String.Empty)
Next
End If
dt.AcceptChanges()
Return dt
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' データのクリア
FpSpread1.ActiveSheet.DataSource = CreateData(True)
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
' データの設定
FpSpread1.ActiveSheet.DataSource = CreateData(False)
End Sub
回避方法
Service Pack 4(v12.0.4505.2012 )で修正済み。
Service Pack を適用せずに対処する方法としては、データクリア時にアクティブセルを明示的にA1セルに設定することで回避が可能です。
■サンプルコード(VB.NET)
Service Pack を適用せずに対処する方法としては、データクリア時にアクティブセルを明示的にA1セルに設定することで回避が可能です。
■サンプルコード(VB.NET)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'回避策
FpSpread1.ActiveSheet.SetActiveCell(0, 0)
' データのクリア
FpSpread1.ActiveSheet.DataSource = CreateData(True)
End Sub
'回避策
FpSpread1.ActiveSheet.SetActiveCell(0, 0)
' データのクリア
FpSpread1.ActiveSheet.DataSource = CreateData(True)
End Sub
旧文書番号
84740