【发布时间】:2015-12-10 17:49:32
【问题描述】:
到目前为止,我已经编写了代码以保持禁用保存和更新按钮,直到用户填写 Groupbox 中的所有必填字段(文本框和组合框),但我也希望保存和更新按钮保持禁用状态,直到用户解决了表单中可用的所有错误,例如 Book_Name不得超过 50 个字符!
如果有人在这方面帮助我,我将不胜感激!
下面是我尝试这样做的代码,但不知何故它不起作用:
Private Sub ValidateInputs(ByVal Sender As Object, ByVal e As EventArgs)
Dim ctrl As Control
Dim strErrorList As String
strErrorList = ""
For Each ctrl In Me.Controls
If Len(ErrorProvider1.GetError(ctrl)) > 0 Then
strErrorList += ErrorProvider1.GetError(ctrl) & ChrW(10) &
ChrW(13)
End If
Next
If Len(strErrorList) = 0 Then
' Process stuff if no errors
btnsave.Enabled = Not GroupBox1.Controls.OfType(Of TextBox).Any(Function(t) t.Text = String.Empty) And _
Not (cboStaff_id.Text = String.Empty OrElse cboPub_id.Text = String.Empty OrElse cboSub_Code.Text = String.Empty _
OrElse DateTimePicker1.Text = " ")
btnSaveUpdate.Enabled = Not GroupBox1.Controls.OfType(Of ComboBox).Any(Function(cbo) cbo.Text = String.Empty) And _
Not (txtbook_name.Text = String.Empty OrElse txtauthor.Text = String.Empty OrElse txtprice.Text = String.Empty _
OrElse txtrack_no.Text = String.Empty OrElse TxtNo_of_Books.Text = String.Empty OrElse txtvol_no.Text = String.Empty OrElse DateTimePicker1.Text = " ")
btndelete.Enabled = Not (cboISBN.Text = String.Empty)
Else
btnsave.Enabled = False
btnSaveUpdate.Enabled = False
MessageBox.Show(strErrorList, "List Of Errors")
End If
End Sub
【问题讨论】:
-
为什么不能为
TBISBN.Text.Length < 13添加测试? -
@Plutonix 我可以控制所有字段 textchanged 事件,如果值与所需的正则表达式模式不匹配,则会出现 errorprovider。我现在想要的是保存/更新按钮保持禁用状态,直到所有错误都得到纠正!
-
我理解了这个问题。
-
那么@Plutonix 你能提供答案吗?
标签: vb.net validation error-handling