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

來源:互聯網
上載者:User

標籤:style   blog   http   color   os   使用   ar   資料   sp   

     在控制台輸入的內容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             string input = null; 5  6             Console.WriteLine("請輸入密碼"); 7  8             while (true) 9             {10                 //儲存使用者輸入的按鍵,並且在輸入的位置不顯示字元11                 ConsoleKeyInfo ck = Console.ReadKey(true);12 13                 //判斷使用者是否按下的Enter鍵14                 if (ck.Key != ConsoleKey.Enter)15                 {16                     if (ck.Key != ConsoleKey.Backspace)17                     {18                         //將使用者輸入的字元存入字串中19                         input += ck.KeyChar.ToString();20                         //將使用者輸入的字元替換為*21                         Console.Write("*");22                     }23                     else24                     {25                         //刪除錯誤的字元26                         Console.Write("\b \b");27                     }28                 }29                 else30                 {31                     Console.WriteLine();32 33                     break;34                 }35             }36 37             Console.WriteLine("你剛才輸入的是{0}", input);38 39             Console.ReadKey();

最終實現效果如下

 

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.