入力値が不正の場合はセルやフォーカスの移動を許可したくないのですが方法はありますか?
対象製品
SPREAD for Windows Forms 8.0J
詳細
セル移動時にはLeaveCellイベントが発生し、フォーカスの移動時にはValidatingイベントが発生します。このタイミングで移動前の入力値を判断し、不正な場合には各イベントのデフォルトの動作をキャンセルします。
下記コードは、セルの値が「abc」の場合にメッセージボックスを表示し、セルの移動とフォーカスの移動をキャンセルするサンプルです。
◎サンプルコード(VB)
◎サンプルコード(C#)
下記コードは、セルの値が「abc」の場合にメッセージボックスを表示し、セルの移動とフォーカスの移動をキャンセルするサンプルです。
◎サンプルコード(VB)
Private Sub FpSpread1_LeaveCell(ByVal sender As System.Object, ByVal e As FarPoint.Win.Spread.LeaveCellEventArgs) Handles FpSpread1.LeaveCell
e.Cancel = CheckValue()
End Sub
Private Sub FpSpread1_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles FpSpread1.Validating
e.Cancel = CheckValue()
End Sub
Private Function CheckValue() As Boolean
If FpSpread1.ActiveSheet.ActiveCell.Value = "abc" Then
' セルの編集を開始します
FpSpread1.StartCellEditing(Nothing, False)
Return True
End If
Return False
End Function
e.Cancel = CheckValue()
End Sub
Private Sub FpSpread1_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles FpSpread1.Validating
e.Cancel = CheckValue()
End Sub
Private Function CheckValue() As Boolean
If FpSpread1.ActiveSheet.ActiveCell.Value = "abc" Then
' セルの編集を開始します
FpSpread1.StartCellEditing(Nothing, False)
Return True
End If
Return False
End Function
◎サンプルコード(C#)
private void fpSpread1_LeaveCell(object sender, FarPoint.Win.Spread.LeaveCellEventArgs e)
{
e.Cancel = CheckValue();
}
private void fpSpread1_Validating(object sender, CancelEventArgs e)
{
e.Cancel = CheckValue();
}
private Boolean CheckValue()
{
if ((string)fpSpread1.ActiveSheet.ActiveCell.Value == "abc")
{
// セルの編集を開始します
fpSpread1.StartCellEditing(null, false);
return true;
}
return false;
}
{
e.Cancel = CheckValue();
}
private void fpSpread1_Validating(object sender, CancelEventArgs e)
{
e.Cancel = CheckValue();
}
private Boolean CheckValue()
{
if ((string)fpSpread1.ActiveSheet.ActiveCell.Value == "abc")
{
// セルの編集を開始します
fpSpread1.StartCellEditing(null, false);
return true;
}
return false;
}