2013-09-16 89 views
3

使用密碼charchter「*」我想在輸入框使用*字符,但它告訴我conversion from "*" to string invalid在輸入框

,我怎樣才能讓我的密碼變量和多變

這裏是我的代碼

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

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

如果這是WinForms,請不要使用InputBox。使用TextBox創建表單並設置密碼字符屬性。 – LarsTech

+4

正確。您不能使用帶有密碼字符的Inp​​utBox。 –

回答

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 
0

不幸的是,InputBox函數沒有這個參數。 VB.Net正在讀取您的"*"作爲DefaultResponse參數的值,或者如果用戶只接受默認條目,則等於value

事實上,InputBox儘管在VisualBasic命名空間中仍然存在,但自2003年以來不被認爲是最新的編碼實踐,但仍被許多習慣於VB6(包括我自己)的人所使用。它是MSDN中最新的條目Visual Basic參考用於2008版本的Visual Studio,並且在當前的(2017)Visual Basic語言參考中找不到。

使用.NET中*或其他密碼字符的標準方法,是使用Windows窗體文本框,然後請使用PasswordCharUseSystemPasswordChar性質改變窗體中的TextBox的性質。可以在「窗體設計屬性」窗口中或在代碼中將其作爲TextBox的屬性進行訪問。

+0

對於遲到應答隊列中的審閱者:問題仍然出現在Google中,並且仍然有觀衆,但單獨的答案不夠。在當前有兩個人中,只有截圖和死鏈接,另一個很好地解釋了該功能背後的誤解,但鏈接到論壇主題,儘管可以通過一些努力收集答案,但違反了「成爲好主意」政策。另一個答案似乎有很好的代碼,但不是答案。通過評論後可隨時刪除評論。 – CWilson