SPREAD for Windows Forms 12.0J 移行ガイド > 旧バージョンからの移行 > 旧バージョンとの相違点 > 8.0.3501.2008での変更点 > 数式の計算時にセル単位でChangedイベントが発生しない |
バージョン | ID | 機能分類 | 対応策 |
---|---|---|---|
8.0.3501.2008 | 80012 | イベント | ○ |
旧バージョンでは、数式の計算時にセル単位でChangedイベントが発生していました。バージョン8.0.3501.2008からはセル範囲でイベントが発生するように変更されています。
旧バージョンと同様の動作を実現するには、Changedイベントのイベント引数RowCountおよびColumnCountを使用して変更されたセルを取得するようにするか、UnionedChangeCellRangeプロパティをfalseに設定します。
FarPoint.Win.Spread.Model.DefaultSheetDataModel datamodel; private void Form1_Load(object sender, EventArgs e) { // 数式の設定 fpSpread1.ActiveSheet.Cells[0, 0].Value = 1; fpSpread1.ActiveSheet.Cells[1, 0].Value = 2; fpSpread1.ActiveSheet.Cells[2, 0].Formula = "A1"; fpSpread1.ActiveSheet.Cells[3, 0].Formula = "A1 + A2"; datamodel = (FarPoint.Win.Spread.Model.DefaultSheetDataModel)fpSpread1.ActiveSheet.Models.Data; // セルごとにChangedイベントの発生 datamodel.UnionedChangeCellRange = false; // Changedイベントの関連付け datamodel.Changed += new FarPoint.Win.Spread.Model.SheetDataModelEventHandler(this.datamodel_Changed); } private void datamodel_Changed(object sender, FarPoint.Win.Spread.Model.SheetDataModelEventArgs e) { // Changedイベントの発生確認 Console.WriteLine(String.Format("Cell[{0}, {1}]から{2}行{3}列のセルが変更", e.Row, e.Column, e.RowCount, e.ColumnCount)); } private void button1_Click(object sender, EventArgs e) { // A1セルの値を変更 fpSpread1.ActiveSheet.Cells[0, 0].Value = 10; }
Dim WithEvents datamodel As FarPoint.Win.Spread.Model.DefaultSheetDataModel Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' 数式の設定 FpSpread1.ActiveSheet.Cells(0, 0).Value = 1 FpSpread1.ActiveSheet.Cells(1, 0).Value = 2 FpSpread1.ActiveSheet.Cells(2, 0).Formula = "A1" FpSpread1.ActiveSheet.Cells(3, 0).Formula = "A1 + A2" datamodel = DirectCast(FpSpread1.ActiveSheet.Models.Data, FarPoint.Win.Spread.Model.DefaultSheetDataModel) ' セルごとにChangedイベントの発生 datamodel.UnionedChangeCellRange = False End Sub Private Sub datamodel_Changed(sender As Object, e As SheetDataModelEventArgs) Handles datamodel.Changed ' Changedイベントの発生確認 Console.WriteLine([String].Format("Cell[{0}, {1}]から{2}行{3}列のセルが変更", e.Row, e.Column, e.RowCount, e.ColumnCount)) End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' A1セルの値を変更 FpSpread1.ActiveSheet.Cells(0, 0).Value = 10 End Sub