作成日: 2020/07/16 最終更新日: 2021/02/26
文書種別
不具合
状況
修正済み
詳細
複数の列や行を選択後に列幅や行の高さを変更すると、ColumnWidthChangedイベントやRowHeightChangedイベント内で取得されるColumnWidthChangeExtentsオブジェクトやRowHeightChangeExtentsオブジェクトに重複した列範囲や行範囲が含まれます。
【再現手順】
1.新規作成したプロジェクトのForm1にFpSpreadを2つ張り付ける。
2.ColumnWidthChangedイベントのFor文にブレークポイントを置いて実行する。
3.実行画面で(A,B,C)列を選択し、列幅を変更する。
4.ColumnListが列数分作成される
---ColumnListの0,1,2では全て{FirstColumn=0,LastColumn=2}を保持している。
◎サンプルコード(VB)
【再現手順】
1.新規作成したプロジェクトのForm1にFpSpreadを2つ張り付ける。
2.ColumnWidthChangedイベントのFor文にブレークポイントを置いて実行する。
3.実行画面で(A,B,C)列を選択し、列幅を変更する。
4.ColumnListが列数分作成される
---ColumnListの0,1,2では全て{FirstColumn=0,LastColumn=2}を保持している。
◎サンプルコード(VB)
Public Class Form1
Private Sub FpSpread1_ColumnWidthChanged(ByVal sender As System.Object, ByVal e As FarPoint.Win.Spread.ColumnWidthChangedEventArgs) Handles FpSpread1.ColumnWidthChanged
For Each c As FarPoint.Win.Spread.ColumnWidthChangeExtents In e.ColumnList
For i As Integer = c.FirstColumn To c.LastColumn
' FpSpread1の列幅をFpSpread2に設定します
FpSpread2.ActiveSheet.Columns(i).Width = FpSpread1.ActiveSheet.Columns(i).Width
Next
Next
End Sub
End Class
Private Sub FpSpread1_ColumnWidthChanged(ByVal sender As System.Object, ByVal e As FarPoint.Win.Spread.ColumnWidthChangedEventArgs) Handles FpSpread1.ColumnWidthChanged
For Each c As FarPoint.Win.Spread.ColumnWidthChangeExtents In e.ColumnList
For i As Integer = c.FirstColumn To c.LastColumn
' FpSpread1の列幅をFpSpread2に設定します
FpSpread2.ActiveSheet.Columns(i).Width = FpSpread1.ActiveSheet.Columns(i).Width
Next
Next
End Sub
End Class
回避方法
Service Pack 5(v10.0.4009.2012)で修正済み。
Service Packを適用せずに対処する方法としては、重複した列幅や行の高さを変更しないようなロジックを実装することで回避可能です。
◎サンプルコード(VB)
Service Packを適用せずに対処する方法としては、重複した列幅や行の高さを変更しないようなロジックを実装することで回避可能です。
◎サンプルコード(VB)
Private Sub FpSpread1_ColumnWidthChanged(ByVal sender As System.Object, ByVal e As FarPoint.Win.Spread.ColumnWidthChangedEventArgs) Handles FpSpread1.ColumnWidthChanged
Dim ColumnList As ArrayList = e.ColumnList
Dim count = ColumnList.Count
Dim index As Integer = 0
While index < count
Dim c As FarPoint.Win.Spread.ColumnWidthChangeExtents = ColumnList(index)
For i As Integer = c.FirstColumn To c.LastColumn
' FpSpread1の列幅をFpSpread2に設定します
FpSpread2.ActiveSheet.Columns(i).Width = FpSpread1.ActiveSheet.Columns(i).Width
index = index + 1
Next
End While
End Sub
Dim ColumnList As ArrayList = e.ColumnList
Dim count = ColumnList.Count
Dim index As Integer = 0
While index < count
Dim c As FarPoint.Win.Spread.ColumnWidthChangeExtents = ColumnList(index)
For i As Integer = c.FirstColumn To c.LastColumn
' FpSpread1の列幅をFpSpread2に設定します
FpSpread2.ActiveSheet.Columns(i).Width = FpSpread1.ActiveSheet.Columns(i).Width
index = index + 1
Next
End While
End Sub
旧文書番号
85813