作成日: 2020/07/31 最終更新日: 2020/08/26
文書種別
不具合
状況
修正済み
詳細
Tabキーや矢印キーを使用して結合セルをアクティブにすると、GetSelectionメソッドで結合セルの選択範囲の取得する際に、行や列を結合している状態にもかかわらずCellRangeオブジェクトのRowCount/ColumnCountプロパティが1を返します。
【再現手順】
1.新規作成したプロジェクトのForm1にFpSpreadとButtonを張り付ける。
2.下記サンプルコードを記述し、プロジェクトを実行する。
3.結合しているB1セルをキーボード操作で選択してボタン押下する。
---行数:1、列数:1(不正な動作です。行数は2を返すべきです)
4.再度B1セルをマウスで選択してボタン押下する。
---行数:2、列数:1(正しい動作です)
■サンプルコード(VB.NET)
【再現手順】
1.新規作成したプロジェクトのForm1にFpSpreadとButtonを張り付ける。
2.下記サンプルコードを記述し、プロジェクトを実行する。
3.結合しているB1セルをキーボード操作で選択してボタン押下する。
---行数:1、列数:1(不正な動作です。行数は2を返すべきです)
4.再度B1セルをマウスで選択してボタン押下する。
---行数:2、列数:1(正しい動作です)
■サンプルコード(VB.NET)
Imports FarPoint.Win.Spread
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
FpSpread1.ActiveSheet.AddSpanCell(0, 1, 2, 1)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
With FpSpread1.ActiveSheet
Dim rng As FarPoint.Win.Spread.Model.CellRange = .GetSelection(0)
Console.WriteLine("行数:{0}", rng.RowCount)
Console.WriteLine("列数:{0}", rng.ColumnCount)
End With
End Sub
End Class
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
FpSpread1.ActiveSheet.AddSpanCell(0, 1, 2, 1)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
With FpSpread1.ActiveSheet
Dim rng As FarPoint.Win.Spread.Model.CellRange = .GetSelection(0)
Console.WriteLine("行数:{0}", rng.RowCount)
Console.WriteLine("列数:{0}", rng.ColumnCount)
End With
End Sub
End Class
回避方法
Service Pack 5(v12.0.4508.2012)で修正済み。
Service Pack を適用せずに対処する場合、EnterCellイベント内で明示的に選択範囲を設定することで回避可能です。
■サンプルコード(VB.NET)
Service Pack を適用せずに対処する場合、EnterCellイベント内で明示的に選択範囲を設定することで回避可能です。
■サンプルコード(VB.NET)
Private Sub FpSpread1_EnterCell(sender As Object, e As FarPoint.Win.Spread.EnterCellEventArgs) Handles FpSpread1.EnterCell
Dim sheet As FarPoint.Win.Spread.SheetView = FpSpread1.ActiveSheet
If sheet.SelectionCount = 1 Then
Dim cell As FarPoint.Win.Spread.Cell = sheet.Cells(e.Row, e.Column)
Dim cellRange = sheet.GetSelection(0)
If cellRange.ColumnCount < cell.ColumnSpan Or cellRange.RowCount < cell.RowSpan Then
sheet.ClearSelection()
sheet.AddSelection(cell.Row.Index, cell.Column.Index, cell.RowSpan, cell.ColumnSpan)
End If
End If
End Sub
Dim sheet As FarPoint.Win.Spread.SheetView = FpSpread1.ActiveSheet
If sheet.SelectionCount = 1 Then
Dim cell As FarPoint.Win.Spread.Cell = sheet.Cells(e.Row, e.Column)
Dim cellRange = sheet.GetSelection(0)
If cellRange.ColumnCount < cell.ColumnSpan Or cellRange.RowCount < cell.RowSpan Then
sheet.ClearSelection()
sheet.AddSelection(cell.Row.Index, cell.Column.Index, cell.RowSpan, cell.ColumnSpan)
End If
End If
End Sub
旧文書番号
85851