Validatingイベントでセルの値をクリアできない場合がある
対象製品
SPREAD for Windows Forms 8.0J
状況
修正済み
詳細
Validatingイベントが複数回実行された場合に、セルの値をクリアできない現象が発生します。
【手順】
1.新規フォームにSPREADとテキストボックスを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.SPREADのA1セルに「abc」を入力します
4.テキストボックスをクリックします
5.手順3と4を繰り返します
--SPREADのA1セルの値がクリアされない場合があります
【サンプルコード】
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
FpSpread1.EditModePermanent = True
End Sub
Private Sub FpSpread1_Validating(sender As Object, e As CancelEventArgs) Handles FpSpread1.Validating
Dim input As String = FpSpread1.ActiveSheet.Cells(0, 0).Text
If input = "" Then
Return
End If
Dim numeric As Integer = 0
If Integer.TryParse(input, numeric) = False Then
'DirectCast(FpSpread1.EditingControl, FarPoint.Win.Spread.CellType.GeneralEditor).ResetText()
FpSpread1.ActiveSheet.Cells(FpSpread1.ActiveSheet.ActiveRowIndex, FpSpread1.ActiveSheet.ActiveColumnIndex).ResetValue()
e.Cancel = True
End If
End Sub
【手順】
1.新規フォームにSPREADとテキストボックスを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.SPREADのA1セルに「abc」を入力します
4.テキストボックスをクリックします
5.手順3と4を繰り返します
--SPREADのA1セルの値がクリアされない場合があります
【サンプルコード】
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
FpSpread1.EditModePermanent = True
End Sub
Private Sub FpSpread1_Validating(sender As Object, e As CancelEventArgs) Handles FpSpread1.Validating
Dim input As String = FpSpread1.ActiveSheet.Cells(0, 0).Text
If input = "" Then
Return
End If
Dim numeric As Integer = 0
If Integer.TryParse(input, numeric) = False Then
'DirectCast(FpSpread1.EditingControl, FarPoint.Win.Spread.CellType.GeneralEditor).ResetText()
FpSpread1.ActiveSheet.Cells(FpSpread1.ActiveSheet.ActiveRowIndex, FpSpread1.ActiveSheet.ActiveColumnIndex).ResetValue()
e.Cancel = True
End If
End Sub
回避方法
Service Pack 4(v8.0.3507.2008)で修正済み。