سلام مجدد
روشی که من پیش گرفتم اینه که از ReadKey بجای ReadLine استفاده بشه تا مقدار متنی در Console ذخیره سازی نشه:
اول این تابع رو ایجاد کردم که متن رمز عبور رو بر می گردونه:
Function PasswordFromKeys() As String
Dim Key As ConsoleKeyInfo
Dim Expr As String = ""
Do
Key = Console.ReadKey(True)
Select Case Key.Key
Case ConsoleKey.Enter
Exit Do
Case ConsoleKey.Escape
Return ""
Case ConsoleKey.Backspace
If Expr.Length = 0 Then Continue Do
Expr = Expr.Remove(Expr.Length - 1, 1)
Console.Write("{0} {0}", Key.KeyChar)
Case ConsoleKey.NumPad0 To ConsoleKey.NumPad9,
ConsoleKey.D0 To ConsoleKey.D9,
ConsoleKey.A To ConsoleKey.Z
Expr += Key.KeyChar
Console.Write("*")
Case Else
Continue Do
End Select
Loop
Return Expr
End Function
برای Backspace و حذف کاراکتر از خود KeyChar که همون Backspace باشه بصورت یک فاصله بین دوتا از همین کارکتر استفاده شده....( کدش رو برای سی شارپ دیدم که از "b \b" استفاده کرده بود)
در مورد کلیدهای Tab و Space مطمئن نبودم که می شه در رمز عبور استفاده کرد یا نه! امان از بی سوادی....
و برای استفاده و نمونه خروجی:
Console.Write("{0} Type Password: ", vbTab)
Dim Password As String = PasswordFromKeys()
Console.WriteLine()
Console.WriteLine("{0} Your Password is: {1}", vbTab, Password)
Screenshot 2024-11-08 082002.png
VB .Net: PasswordFromKeys - DEV Community