ErrorProvider:使い方

■ErrorProvider

 ・フォームの各コントロールについて、Validatingイベントにてエラー時、

  対象のコントロールの横にアイコンと、メッセージを表示することができる。

■使い方

 ①フォーム上にErrorProviderをドラッグ

 ②チェックしたいコントロールのValidatingイベントにて、チェック処理及を記載し

  エラー時に表示したいメッセージを、SetErrorにセットする。

  チェック後、エラーでない場合は、SetErrorにNothingをセットする。

 ③e.Cancel = Trueにすることで、当該項目に正常な値を入力するまで、他の項目

  へのフォーカス移動を禁止することができる。そこまで制御したくなければFalse。

  (*)CancelをTrueにしてない場合、Form.ValidateChildrenで常にTrueが返される。

 ④Form.ValidateChildrenメソッドを実行することで、Form上の全ての

  Validationを一括実行することができる。

  各項目の入力時はアイコンで警告、登録ボタン押下時などは

  纏めてチェックを行い、メッセージボックスを出す、といった場合に有用。

 ⑤チェックに掛かった場合は、GetErrorにてそのメッセージを取得することが可能。

 ex)

Private Sub TxtUserId_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles TxtUserId.Validating
  If String.IsNullOrWhiteSpace(Me.TxtUserName.Text) Then
   ErrPUserMainteDetail.SetError(Me.TxtUserName,"必須です。")
   e.Cancel = True
  Else
   ErrPUserMainteDetail.SetError(Me.TxtUserName, String.Empty)
   e.Cancel = False
  End If

End Sub

Private Sub ExecuteNew()

     _frm.ValidateChildren()
    If Not String.IsNullOrWhiteSpace(_frm.ErrPUserMainteDetail.GetError(Me.TxtUserName))        Then
        errMsg=_frm.ErrPUserMainteDetail.GetError(Me.TxtUserName)
    End If

End sub

 

■以下の様な使い方が良い

’---各オブジェクトのValidatingEvent

Private Sub TxtAgmtZip_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles TxtAgmtZip.Validating
 ErrPAgmt.SetError(Me.TxtAgmtZip, String.Empty)
 If String.IsNullOrEmpty(Me.TxtAgmtZip.Text) Then
  Me.ErrPAgmt.SetError(Me.TxtAgmtZip, AppMessages.ART_MAIN0002)
 End If
End Sub

'---登録処理時

’---まとめてチェックするイベントを呼ぶ

 If Not IsInputOk() Then Return

 

Private Function IsInputOk() As Boolean
Dim errMsg As New StringBuilder
Me.ValidateChildren()

’---各項目のValidatinMessageを集約

If Not String.IsNullOrWhiteSpace(Me.ErrPAgmt.GetError(Me.TxtAgmtZip)) Then
errMsg.Append($"〒{AppConstants.STR_COLON}")
errMsg.AppendLine(Me.ErrPAgmt.GetError(Me.TxtAgmtZip))
End If

’---全Messageがブランクであれば、Trueを返す
If String.IsNullOrWhiteSpace(errMsg.ToString) Then Return True

’---メッセージがあれば表示し、Falseを返す
errMsg.Insert(0, "以下項目の入力値が正しくありません。"& ControlChars.NewLine)
Utils.Alert(errMsg.ToString)
Return False
End Function