InputPanel for WPF
イベントによるデータ検証
機能 > データ検証 > イベントによるデータ検証

InputPanel は、入力検証を行うもう 1 つの方法として、イベントによる方法も提供しています。 コントロールには、ユーザー入力の検証に使用できる ValidateCurrentItem イベントが用意されています。

次の図に、イベントを使用して適用された検証を示します。

イベントを使用したデータ検証を実装するには、コードでValidateCurrentItem イベントをサブスクライブし、イベントハンドラに検証規則を追加します。次のコードは、イベントを使用して検証を適用する方法を示します。この例では、「クイックスタート」で作成したサンプルを使用します。

Private Sub InPanel_ValidateCurrentItem(sender As Object, e As CancelEventArgs) _
    Handles InPanel.ValidateCurrentItem
    Dim inputPanel As C1InputPanel = TryCast(sender, C1InputPanel)
    Dim customer As Customer = TryCast(inputPanel.CurrentItem, Customer)

    If customer IsNot Nothing Then
        Dim errorList = New ObservableCollection(Of ErrorInfo)()

        If customer.Name IsNot Nothing AndAlso _
            String.IsNullOrWhiteSpace(customer.Name.ToString()) Then
            errorList.Add(New ErrorInfo() With { _
                .ErrorInputName = "名前", _
                .ErrorContent = "このフィールドは空にすることはできません。" _
            })
        End If
        If customer.Weight > 110 Then
            errorList.Add(New ErrorInfo() With { _
                .ErrorInputName = "体重", _
                .ErrorContent = "値が範囲外です" _
            })
        End If
        inputPanel.ValidationErrors = errorList
        If errorList.Count > 0 Then
            e.Cancel = True
        End If
    End If
End Sub
private void InPanel_ValidateCurrentItem
    (object sender, System.ComponentModel.CancelEventArgs e)
{
    C1InputPanel inputPanel = sender as C1InputPanel;
    Customer customer = inputPanel.CurrentItem as customer;

    if (customer != null)
    {
        var errorList = new ObservableCollection<ErrorInfo>();

    ustomer customer = inputPanel.CurrentItem as customer;
        if (customer.名前 != null && 
            string.IsNullOrWhiteSpace(customer.名前.ToString()))
        {
            errorList.Add(new ErrorInfo { ErrorInputName = "名前", 
                ErrorContent = "このフィールドは空ことはできません。"
            });
        }
        if (customer.体重 > 110)
        {
            errorList.Add(new ErrorInfo { ErrorInputName = "体重", 
                ErrorContent = "範囲外の値です"
            });
        }
        inputPanel.ValidationErrors = errorList;
        if (errorList.Count > 0)
        {
            e.Cancel = true;
        }
    }
}
関連トピック