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