次の方法で共有


XmlValidatingEventArgs.ReportError メソッド (XPathNavigator, Boolean, String)

指定した値を持つカスタム エラー情報の入った FormError オブジェクトを作成し、それをフォームの FormErrorCollection オブジェクトに追加します。

名前空間:  Microsoft.Office.InfoPath
アセンブリ:  Microsoft.Office.InfoPath (Microsoft.Office.InfoPath.dll)

構文

'宣言
Public MustOverride Sub ReportError ( _
    node As XPathNavigator, _
    siteIndependent As Boolean, _
    message As String _
)
'使用
Dim instance As XmlValidatingEventArgs
Dim node As XPathNavigator
Dim siteIndependent As Boolean
Dim message As String

instance.ReportError(node, siteIndependent, _
    message)
public abstract void ReportError(
    XPathNavigator node,
    bool siteIndependent,
    string message
)

パラメーター

  • siteIndependent
    型: System.Boolean
    FormError オブジェクトの自動削除の条件を設定します。true に設定すると、このイベント オブジェクトの Match プロパティによって返された XPath 式と一致する任意のノードへの変更のための FormError オブジェクトが削除されます。false に設定すると、FormError オブジェクトは、次回フォームが検証されて、このイベント オブジェクトの Site プロパティにより返されたノードに変更が加えられた場合にのみ削除されます。
  • message
    型: System.String
    短いエラー メッセージに使用されるテキスト。

例外

例外 条件
ArgumentException

このメソッドに渡されたパラメーターは有効ではありません。

ArgumentNullException

このメソッドに渡されたパラメーターは null 参照 (Visual Basic ではNothing ) です。

解説

ReportError メソッドを使用すると、Validating イベント中に発生するエラーのためのカスタム エラーを作成できます。

ReportError メソッドが呼び出されると、InfoPath により FormError オブジェクトが作成され、それが現在のフォームの FormErrorCollection に追加されます。FormError オブジェクトは、その検証制約が有効ではなくなったときにコレクションから削除されます。特定のケースで、Delete メソッドまたは DeleteAll メソッドを使用して明示的に削除することもできます。

FormError オブジェクトは、FormErrorCollection クラスの Add メソッドを使用して作成することもできます。

注意

同じ種類のすべてのノードに対してエラーを適用する場合は、サイトに依存しないエラーを使用する必要があります。特定のノードに対してのみエラーを適用する場合は、サイトに依存するエラーを使用します。

このメンバーには、現在開いているフォームと同じドメインで実行中のフォーム、またはクロスドメインのアクセス許可が与えられたフォームのみがアクセスできます。

この型またはメンバーには、Microsoft InfoPath Filler または Web ブラウザーで開かれたフォームを実行中のコードからアクセスできます。

次の例では、XmlValidatingEventArgs クラスが XmlEventArgs クラスから継承した Site プロパティを使用して、Validating イベントを発生させたノードの値をチェックしています。データ検証に失敗した場合は、ReportError メソッドを使用してカスタム エラーを作成します。

public void field1_Validating(object sender, XmlValidatingEventArgs e)
{
   if (e.Site.InnerXml != String.Empty)
   {
      int fieldValue = int.Parse((e.Site.InnerXml));

      if (fieldValue > 50)
      {
         e.ReportError(e.Site,
            false,
            "Quantity cannot exceed 50.");
      }

      if (fieldValue < 0)
      {
         e.ReportError(e.Site,
            false,
            "Quantity cannot be less than 0.");
      }
   }
}
Public Sub field1_Validating(ByVal sender As Object , _
   ByVal e As XmlValidatingEventArgs)
   If (e.Site.InnerXml <> String.Empty) Then
      Integer fieldValue = Integer.Parse((e.Site.InnerXml))

      If (fieldValue > 50) Then
         e.ReportError(e.Site,
            false,
            "Quantity cannot exceed 50.")
      End If

      If (fieldValue < 0) Then
         e.ReportError(e.Site,
            false,
            "Quantity cannot be less than 0.")
      End If
   End If
End Sub

関連項目

参照

XmlValidatingEventArgs クラス

XmlValidatingEventArgs メンバー

ReportError オーバーロード

Microsoft.Office.InfoPath 名前空間