程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#實現在控制台輸入密碼顯示星號的方法

C#實現在控制台輸入密碼顯示星號的方法

編輯:關於C語言

在控制台輸入的內容C#默認按照字符串進行處理,如果直接讓用戶一次輸入完畢就很難實現 顯示星號的功能。但是如果讓用戶一次只能輸入一個字符就,在將用戶輸入的字符替換為星號就可以實現了!

首先,C#中能讓用戶按下一個按鍵的方法就是Console.Readkey(),用戶一次只能按下一個按鍵,其中它的另外一個重載方法是Console.ReadKey(bool b),bool類型的參數用來控制是否在控制台上顯示用戶按下的按鍵。那麼我們可以傳入true參數,使用戶按下的按鍵不顯示在控制台上,這樣光標始終停留在原來的位置,然後在該位置打印一個*號即可實現。同時此方法的返回值為ConsoleKeyInfo類型。通過查MSND得知ConsoleKeyInfo類型是描述按下的控制台鍵,包括控制台鍵表示的字符以及 Shift、Alt 和 Ctrl 修改鍵的狀態。此類型數據類型是結構體類型,其中有兩個重要的屬性Key和KeyChar。其中的Key對應用於按下的某個按鍵,是枚舉類型,KeyChar是用戶按下按鍵對應的Unicode編碼字符。那麼這樣我就就能拿到用戶輸入的字符串和用戶按下的按鍵。用戶輸入密碼是一個循環的過程,當用戶按下按鍵輸入密碼時候設置不顯示字符,然後在相同位置打印一個*號,最後判斷用戶是否按下了回車鍵,這樣就結束了整個密碼輸入過程。

具體代碼如下

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 //控制台輸入密碼顯示星號 //定義一個字符串接收用戶輸入的內容 string input = null; Console.WriteLine("請輸入密碼"); while (true) { //存儲用戶輸入的按鍵,並且在輸入的位置不顯示字符 ConsoleKeyInfo ck = Console.ReadKey(true); //判斷用戶是否按下的Enter鍵 if (ck.Key != ConsoleKey.Enter) { if (ck.Key != ConsoleKey.Backspace) { //將用戶輸入的字符存入字符串中 input += ck.KeyChar.ToString(); //將用戶輸入的字符替換為* Console.Write("*"); } else { //刪除錯誤的字符 Console.Write("\b \b"); } } else { Console.WriteLine(); break; } } Console.WriteLine("你剛才輸入的是{0}", input); Console.ReadKey();

最終實現效果如下

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved