2016-06-20 3 views
0

У меня есть этот код:окно сообщения для нескольких условия

Class Form1 
    Function ValidatePassword(ByVal pwd As String, Optional ByVal minLength As Integer = 8, Optional ByVal numUpper As Integer = 1, Optional ByVal numLower As Integer = 1, Optional ByVal numNumbers As Integer = 1) As Boolean 
     Dim upper As New System.Text.RegularExpressions.Regex("[A-Z]") 
     Dim lower As New System.Text.RegularExpressions.Regex("[a-z]") 
     Dim number As New System.Text.RegularExpressions.Regex("[0-9]") 

     If Len(pwd) < minLength Then 
      MsgBox("Password must consist of 8 characters as minimum!") 
      Return False 
     End If 

     If upper.Matches(pwd).Count < numUpper Then 
      MsgBox("Password must consist of uppercase letter!") 
      Return False 
     End If 

     If lower.Matches(pwd).Count < numLower Then 
      MsgBox("Password must consist of lowercase letter!") 
      Return False 
     End If 

     If number.Matches(pwd).Count < numNumbers Then 
      MsgBox("Password must consist of at least 1 digit character!") 
      Return False 
     End If 

     MsgBox("Password OK!") 
     Return True 
    End Function 
    Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click 
     Label3.Text = ValidatePassword(TextBox1.Text) 
    End Sub 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

    End Sub 
End Class 

это хорошо работает, чтобы дать мне сообщение, если один из состояния выполняется. Я хочу, чтобы получить что-то вроде: Например, вход: askjf

затем окно сообщения показали:

  1. Пароль должен состоять из 8 символов, как минимум!
  2. Пароль должен состоять из прописной буквы!
  3. Пароль должен состоять не менее чем из 1 цифры!

Помогите пожалуйста? Благодаря!

ответ

0

Используйте List(Of String) для хранения каждой ошибки, поскольку она встречается.

После того, как все проверки выполнены, если ваш List имеет более нуля, тогда вы должны показать ошибки в окне сообщения. В противном случае тест был пройден.

Вот некоторые примеры кода:

Function ValidatePassword(ByVal pwd As String, Optional ByVal minLength As Integer = 8, Optional ByVal numUpper As Integer = 1, Optional ByVal numLower As Integer = 1, Optional ByVal numNumbers As Integer = 1) As Boolean 
    Dim upper As New System.Text.RegularExpressions.Regex("[A-Z]") 
    Dim lower As New System.Text.RegularExpressions.Regex("[a-z]") 
    Dim number As New System.Text.RegularExpressions.Regex("[0-9]") 

    'create a new list to store any errors 
    Dim messageList As New List(Of String) 
    'create a boolean to handle true/ false result 
    Dim checkResult As Boolean 

    'add messages as necessary depending on the checks 
    If Len(pwd) < minLength Then 
     messageList.Add("Password must consist of 8 characters as minimum!") 
    End If 

    If upper.Matches(pwd).Count < numUpper Then 
     messageList.Add("Password must consist of uppercase letter!") 
    End If 

    If lower.Matches(pwd).Count < numLower Then 
     messageList.Add("Password must consist of lowercase letter!") 
    End If 

    If number.Matches(pwd).Count < numNumbers Then 
     messageList.Add("Password must consist of at least 1 digit character!") 
    End If 

    ' check for any error messages 
    If messageList.Count = 0 Then 
     MsgBox("Password OK!") 
     checkResult = True 
    Else 
     'join the list items together using new line as separator for formatting 
     MessageBox.Show(Join(messageList.ToArray, vbCrLf)) 
     checkResult = False 
    End If 

    'result of function 
    Return checkResult 

End Function 
+0

Это отличная идея, но я получил эти ошибки: «Count» не является членом «System.Windows.Forms.Message» и «результат» имя является не заявлено. –

+0

Я запустил этот код в проекте winfs vb.net и работал без ошибок. Я обновил код, чтобы использовать другое имя переменной, чтобы избежать конфликтов имен. Возможно, попробуй еще раз. –

+0

отлично! большое спасибо –

Смежные вопросы