5

I want to use * character in inputbox but an error prompts

conversion from "*" to string invalid 

How can I make my inputbox hide typed text into password characters?

Here is my code

Dim value As String
value = InputBox("Security Check", " Enter password", "*")

If value = "123456" Then
    numr.Enabled = True
End If
End Sub 
4

4 回答 4

1

这对于内置的 Function InputBox 是不可能的。您设置的“*”值是该函数的默认值。http://msdn.microsoft.com/en-us/library/6z0ak68w(v=vs.90).aspx

这是您可以做的事情。http://www.vbforums.com/showthread.php?627996-Accepting-password-characters-for-InputBox-function

于 2013-09-16T18:45:14.330 回答
1

您必须自己定义它这是我编写的用于制作自定义密码输入框的代码我将其定义为一个类,然后继承表单类并为其赋予自定义属性通过这样做我创建了一个属性,该属性确定是否授予访问权限或不。您可以创建加密并与数据库通信以检索密码,但这仅显示了如何使用自定义控件。

Public Class Form1
    Dim test As New CustomForm("workflow")

    Public Class CustomForm
        Inherits Form
        Property SecretPassword As String
        Property GrantAccess As Boolean
        Sub New(Password As String)
            GrantAccess = False
            Me.SecretPassword = Password
            Dim lbl As New Label
            lbl.Text = "Password"
            Me.Controls.Add(lbl)
            Me.Text = "***PASSWORD INPUT REQUIRED***"
            Dim frmSZ As New Size(400, 100)
            Me.Size = frmSZ
            Dim IBox As New TextBox
            AddHandler IBox.KeyDown, AddressOf TextBox1_KeyDown
            Dim ibox20 As New Point(100, 0)
            IBox.Location = ibox20
            IBox.PasswordChar = "*"
            Me.Controls.Add(IBox)
            Me.Show()
        End Sub
        Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs)
            If e.KeyCode = Keys.KeyCode.Enter Then
                Try
                    Dim passswordInput As String = sender.text
                    If passswordInput = Me.SecretPassword Then
                        GrantAccess = True
                        Me.Dispose()
                    Else
                        MsgBox("Sorry the password you entered is not correct please try again. The password is case sensitive make sure your caps lock is not on.")

                    End If
                Catch ex As Exception

                End Try
            End If
        End Sub
    End Class

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        MsgBox(test.GrantAccess)
    End Sub
End Class
于 2016-12-02T16:06:58.177 回答
0

在此处输入图像描述 在此处输入图像描述

下载 vb.net 表单:PasswordDialog.7z (3KB)

于 2014-12-17T20:01:28.747 回答
0

不幸的是,该InputBox函数没有这个参数。VB.Net 正在读取您"*"作为DefaultResponse参数的值,或者value如果用户只接受默认条目,则将等于该值。

事实上,InputBox虽然仍然可以在 VisualBasic 命名空间中找到,但自 2003 年以来并未被认为是最新的编码实践,但仍然被许多已经或曾经习惯于 VB6 的人(包括我自己)使用。它是 MSDN Visual Basic 参考中的最新条目,适用于 2008 版 Visual Studio,在当前 (2017) Visual Basic 语言参考中找不到。

在 .Net 中使用密码字符或其他密码字符的标准方法*是使用 Windows 窗体文本框,然后使用PasswordCharUseSystemPasswordChar属性来更改窗体内文本框的性质。这些可以在“表单设计属性”窗口中访问,也可以作为代码中 TextBox 的属性访问。

于 2017-06-24T23:04:42.253 回答