MESCIUS SPREAD for Windows Forms 17.0J 移行ガイド
数式の計算時にセル単位で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
参照

 

 


© MESCIUS inc. All rights reserved.