我正在为我的公证业务编写申请表。我是爱荷华州的公证人。
我在表单上有很多类型的控件。 ComboBox(可以修改),TextBox和MaskedTextBox。 我知道我可以使用TextBoxBase类来覆盖TextBox以及MaskedTextBox,但是我的验证代码没有做任何事情。没有任何事情发生。
我在名为ErrorProvider的表单上有一个ErrorProvider。它将“AutoValidate”选项设置为“EnableAllowFocusChange”。 BlinkStyle设置为AlwaysBlink。所有其他属性都是默认属性。
表格上也有三个按钮。重置,保存并关闭。 Reset和Close按钮都设置为CausesValidation = False,Save按钮设置为CausesValidation = True。
单击“保存”按钮时,我需要确保“必填”字段具有值。
所以,我想我会使用控件的Validated和Validating事件。但是,单击“保存”时,没有任何反应。 ErrorProvider甚至没有显示。如果我把控件留空,仍然没有任何反应。
这是我的代码:
Private Sub Company_Validated(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Company.Validated, CompanyAddress.Validated, CompanyCity.Validated, CompanyZipCode.Validated, CompanyPhone.Validated, CompanyAddressRemit.Validated, CompanyCityRemit.Validated, CompanyZipCodeRemit.Validated
ErrorProvider.SetError(CType(sender, TextBoxBase), String.Empty)
End Sub
Private Sub Company_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) _
Handles Company.Validating, CompanyAddress.Validating, CompanyCity.Validating, CompanyZipCode.Validating, CompanyPhone.Validating, CompanyAddressRemit.Validating, CompanyCityRemit.Validating, CompanyZipCodeRemit.Validating
Dim ErrorMessage As String = String.Empty
Dim TheField As TextBoxBase = CType(sender, TextBoxBase)
If TypeOf TheField Is MaskedTextBox Then
CType(TheField, MaskedTextBox).TextMaskFormat = MaskFormat.ExcludePromptAndLiterals
End If
If Not IsValid(TheField, ErrorMessage) Then
e.Cancel = True
TheField.Select(0, TheField.Text.Length)
ErrorProvider.SetError(TheField, ErrorMessage)
End If
End Sub
Private Function IsValid(ByVal ControlName As TextBoxBase, ByVal ErrorMessage As String) As Boolean
If String.IsNullOrEmpty(ControlName.Text.ToString) Then
ErrorMessage = "This is a required field."
Return False
Else
ErrorMessage = String.Empty
Return True
End If
End Function
关于我做错的任何想法?
答案 0 :(得分:0)
vb.net
中的String类有点“奇怪”。它是一种引用类型(不是所有情况)都像值类型一样。您需要将ByVal
更改为ByRef
。
Private Function IsValid(ByVal ControlName As TextBoxBase, ByRef ErrorMessage As String) As Boolean