作成日: 2020/02/04 最終更新日: 2020/04/30
文書種別
不具合
状況
修正済み
詳細
LegacyBehaviorsプロパティにStyleを含めず新しいスタイルシステムを使用すると、セルの編集を開始して値を変更せずに終了した場合であってもDefaultSheetDataModelのChangedイベントが発生します。
【再現手順】
1.新規作成したプロジェクトのForm1にFpSpreadを貼り付ける。
2.下記サンプルコードを記述し、プロジェクトをデバック実行する。
3.任意のセルを編集可能状態にし、編集せずにTabキー等でセルを移動する。
-------セル情報を変更していないのにチェンジイベントが発生してしまう(コンソールへの出力で確認ができます)
■サンプルコード(VB.NET)
【要因】
古い値と比較せずに値が常にデータモデルに設定されていることに起因しています。
【再現手順】
1.新規作成したプロジェクトのForm1にFpSpreadを貼り付ける。
2.下記サンプルコードを記述し、プロジェクトをデバック実行する。
3.任意のセルを編集可能状態にし、編集せずにTabキー等でセルを移動する。
-------セル情報を変更していないのにチェンジイベントが発生してしまう(コンソールへの出力で確認ができます)
■サンプルコード(VB.NET)
Imports FarPoint.Win.Spread.Model
Public Class Form1
Private WithEvents dm As FarPoint.Win.Spread.Model.DefaultSheetDataModel
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' バージョンの確認
Me.Text = FpSpread1.ProductVersion
' 値の設定
For i = 0 To FpSpread1.ActiveSheet.RowCount - 1
For j = 0 To FpSpread1.ActiveSheet.ColumnCount - 1
FpSpread1.ActiveSheet.SetValue(i, j, $"R{i}C{j}")
Next
Next
' データモデルの設定
dm = FpSpread1.ActiveSheet.Models.Data
End Sub
Private Sub dm_Changed(sender As Object, e As SheetDataModelEventArgs) Handles dm.Changed
Console.WriteLine($"dm_Changed: row={e.Row} col={e.Column} Type = {e.Type}")
End Sub
End Class
Public Class Form1
Private WithEvents dm As FarPoint.Win.Spread.Model.DefaultSheetDataModel
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' バージョンの確認
Me.Text = FpSpread1.ProductVersion
' 値の設定
For i = 0 To FpSpread1.ActiveSheet.RowCount - 1
For j = 0 To FpSpread1.ActiveSheet.ColumnCount - 1
FpSpread1.ActiveSheet.SetValue(i, j, $"R{i}C{j}")
Next
Next
' データモデルの設定
dm = FpSpread1.ActiveSheet.Models.Data
End Sub
Private Sub dm_Changed(sender As Object, e As SheetDataModelEventArgs) Handles dm.Changed
Console.WriteLine($"dm_Changed: row={e.Row} col={e.Column} Type = {e.Type}")
End Sub
End Class
【要因】
古い値と比較せずに値が常にデータモデルに設定されていることに起因しています。
回避方法
Service Pack 4(v12.0.4505.2012 )で修正済み。
Service Pack を適用せずに対処する方法としては、LegachBehaviorsプロパティにStyleを含めて以前のスタイルシステムを使用することで回避可能です。
Service Pack を適用せずに対処する方法としては、LegachBehaviorsプロパティにStyleを含めて以前のスタイルシステムを使用することで回避可能です。
旧文書番号
84911