【セル型全般】 セルの編集後にデータが変更されたかどうかを取得する方法はありますか?
対象製品
SPREAD for .NET Windows Forms Edition
詳細
ActiveX版のSPREADでは、EditModeイベントのChangeMade引数により、データが変更されたかどうかを取得することができます。このEditModeイベントは.NET版のSPREADでは、EditModeOnとEditModeOffの2つのイベントに分けられていますが、ChangeMade引数に代わる引数やプロパティはありません。ただし、.NET版ではデータモデルを使用して、同等の処理を実現できます。
セルのデータを変更すると、データモデルのChangedイベント引数のTypeプロパティには、CellsUpdatedが設定されます。またイベントは次の順番に発生します。
EditModeOn
datamodel_Changed
EditModeOff
このためフラグ変数を利用して、編集によりデータが変更されたかどうかを調べることができます。
◎サンプルコード(VB)
◎サンプルコード(C#)
セルのデータを変更すると、データモデルのChangedイベント引数のTypeプロパティには、CellsUpdatedが設定されます。またイベントは次の順番に発生します。
EditModeOn
datamodel_Changed
EditModeOff
このためフラグ変数を利用して、編集によりデータが変更されたかどうかを調べることができます。
◎サンプルコード(VB)
Imports FarPoint.Win.Spread.Model
Dim WithEvents datamodel As DefaultSheetDataModel
Dim bUpdate As Boolean
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
datamodel = FpSpread1.ActiveSheet.Models.Data
End Sub
Private Sub datamodel_Changed(ByVal sender As Object, ByVal e As SheetDataModelEventArgs) Handles datamodel.Changed
If e.Type = SheetDataModelEventType.CellsUpdated Then
bUpdate = True
End If
End Sub
Private Sub FpSpread1_EditModeOff(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOff
If bUpdate Then
Debug.WriteLine("データは変更されました。")
Else
Debug.WriteLine("データは変更されませんでした。")
End If
End Sub
Private Sub FpSpread1_EditModeOn(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOn
bUpdate = False
End Sub
Dim WithEvents datamodel As DefaultSheetDataModel
Dim bUpdate As Boolean
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
datamodel = FpSpread1.ActiveSheet.Models.Data
End Sub
Private Sub datamodel_Changed(ByVal sender As Object, ByVal e As SheetDataModelEventArgs) Handles datamodel.Changed
If e.Type = SheetDataModelEventType.CellsUpdated Then
bUpdate = True
End If
End Sub
Private Sub FpSpread1_EditModeOff(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOff
If bUpdate Then
Debug.WriteLine("データは変更されました。")
Else
Debug.WriteLine("データは変更されませんでした。")
End If
End Sub
Private Sub FpSpread1_EditModeOn(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOn
bUpdate = False
End Sub
◎サンプルコード(C#)
using FarPoint.Win.Spread.Model;
private DefaultSheetDataModel datamodel;
private bool bUpdate;
public Form1()
{
// ~記載省略~
datamodel = (DefaultSheetDataModel)fpSpread1.Sheets[0].Models.Data;
datamodel.Changed += new SheetDataModelEventHandler(this.datamodel_Changed);
}
private void datamodel_Changed(object sender, SheetDataModelEventArgs e)
{
if (e.Type == SheetDataModelEventType.CellsUpdated)
bUpdate = true;
}
private void fpSpread1_EditModeOff(object sender, System.EventArgs e)
{
if (bUpdate)
Console.WriteLine("データは変更されました。");
else
Console.WriteLine("データは変更されませんでした。");
}
private void fpSpread1_EditModeOn(object sender, System.EventArgs e)
{
bUpdate = false;
}
private DefaultSheetDataModel datamodel;
private bool bUpdate;
public Form1()
{
// ~記載省略~
datamodel = (DefaultSheetDataModel)fpSpread1.Sheets[0].Models.Data;
datamodel.Changed += new SheetDataModelEventHandler(this.datamodel_Changed);
}
private void datamodel_Changed(object sender, SheetDataModelEventArgs e)
{
if (e.Type == SheetDataModelEventType.CellsUpdated)
bUpdate = true;
}
private void fpSpread1_EditModeOff(object sender, System.EventArgs e)
{
if (bUpdate)
Console.WriteLine("データは変更されました。");
else
Console.WriteLine("データは変更されませんでした。");
}
private void fpSpread1_EditModeOn(object sender, System.EventArgs e)
{
bUpdate = false;
}
キーワード
機能・仕様 HowTo セル型 互換性・移行
この文書は、以前は次のFAQ IDで公開されていました : 5252