2014-11-16 3 views
0

Когда пользователь делает что-то конкретное, например, сохранение данных. Мне нужно, чтобы ящик сообщений появлялся с просьбой ввести пароль в этом окне сообщений, чтобы проверить данные.Пароль Поле сообщения в VB

Возможно ли это? И если да, то как?

+2

Возможно ли это? Да. Как это сделать? Зависит от вашего кода. Очевидно. Возможно, вы должны нанять кого-то, чтобы сделать это изменение ... – Aron

+0

Хорошо спасибо, по крайней мере, я знаю, что это возможно. Мне просто нужно выяснить, как это сделать. Я огляделся для настраиваемых сообщений. Я еще не нашел решение. – user3770735

+0

Чтобы приблизиться к поведению MessageBox с одним или несколькими текстовыми полями, вам нужно написать свою собственную форму и показать ее с помощью метода ShowDialog. Вам также необходимо предоставить какую-то ценность, передаваемую между формами с использованием общедоступных свойств. Полный ответ слишком широк. – Steve

ответ

0

Вы можете создавать свои собственные DialogBoxes.

Пример:

Option Strict On 
Option Explicit On 
Option Infer Off 
Public Class Form1 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Dim pwD As New PasswordDialogBox 
     If pwD.ShowDialog() = Windows.Forms.DialogResult.OK Then 
      MessageBox.Show("The user entered the following password: '" & pwD.Password & "'", "Password Confirmed", MessageBoxButtons.OK, MessageBoxIcon.Information) 
     Else 
      MessageBox.Show("The user cancelled.", "User Cancel", MessageBoxButtons.OK, MessageBoxIcon.Information) 
     End If 
    End Sub 
End Class 
Public Class PasswordDialogBox 
    Inherits Form 
    Friend WithEvents tbPassword As New TextBox With {.PasswordChar = "*"c, .Parent = Me} 
    Friend WithEvents Label1 As New Label With {.Parent = Me} 
    Friend WithEvents okButton As New Button With {.Text = "OK", .Parent = Me} 
    Friend Shadows WithEvents cancelButton As New Button With {.Text = "Cancel", .Parent = Me} 
    Public Property Password As String 
    Sub New() 
     Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedToolWindow 
     Me.Size = New Size(200, 150) 
     Me.Text = "Enter Password" 
     tbPassword.Left = Me.ClientRectangle.Width \ 2 - tbPassword.ClientRectangle.Width \ 2 
     tbPassword.Top = Me.ClientRectangle.Height \ 2 - tbPassword.ClientRectangle.Height \ 2 
     Label1.AutoSize = True 
     Label1.Text = "Please enter a password" 
     Label1.Left = (Me.ClientRectangle.Width \ 2) - (Label1.ClientRectangle.Width \ 2) 
     okButton.Left = Me.ClientRectangle.Width - 5 - okButton.ClientRectangle.Width 
     okButton.Top = Me.ClientRectangle.Height - 5 - okButton.Height 
     cancelButton.Left = 5 
     cancelButton.Top = Me.ClientRectangle.Height - 5 - cancelButton.Height 
    End Sub 
    Private Sub okButton_Click(sender As Object, e As EventArgs) Handles okButton.Click 
     If PasswordMeetsCriteria(tbPassword.Text) Then 
      Me.Password = tbPassword.Text 
      Me.DialogResult = Windows.Forms.DialogResult.OK 
     Else 
      MessageBox.Show("Password is invalid, please re-enter your password or cancel.", "Invalid Password", MessageBoxButtons.OK, MessageBoxIcon.Error) 
     End If 
    End Sub 
    Function PasswordMeetsCriteria(password As String) As Boolean 
     Dim validCharacters As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`[email protected]#$%^&*()_+,./;'[]\<>?:""{}" 
     For Each c As Char In password 
      If validCharacters.IndexOf(c) = -1 Then Return False 
     Next 
     Return True 
    End Function 
    Private Sub cancelButton_Click(sender As Object, e As EventArgs) Handles cancelButton.Click 
     Me.DialogResult = Windows.Forms.DialogResult.Cancel 
    End Sub 
End Class 
+0

Огромное спасибо, я посмотрю код и посмотрю, что я могу извлечь из него, чтобы реализовать его в моей системе. – user3770735

+0

Добро пожаловать! Дайте мне знать, если у вас есть вопрос об этом :-) –

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