当前位置: 首页 > 编程笔记 >

C#实现在控制台输入密码显示星号的方法

谷梁玺
2023-03-14
本文向大家介绍C#实现在控制台输入密码显示星号的方法,包括了C#实现在控制台输入密码显示星号的方法的使用技巧和注意事项,需要的朋友参考一下

在控制台输入的内容C#默认按照字符串进行处理,如果直接让用户一次输入完毕就很难实现 显示星号的功能。但是如果让用户一次只能输入一个字符就,在将用户输入的字符替换为星号就可以实现了!

首先,C#中能让用户按下一个按键的方法就是Console.Readkey(),用户一次只能按下一个按键,其中它的另外一个重载方法是Console.ReadKey(bool b),bool类型的参数用来控制是否在控制台上显示用户按下的按键。那么我们可以传入true参数,使用户按下的按键不显示在控制台上,这样光标始终停留在原来的位置,然后在该位置打印一个*号即可实现。同时此方法的返回值为ConsoleKeyInfo类型。通过查MSND得知ConsoleKeyInfo类型是描述按下的控制台键,包括控制台键表示的字符以及 Shift、Alt 和 Ctrl 修改键的状态。此类型数据类型是结构体类型,其中有两个重要的属性Key和KeyChar。其中的Key对应用于按下的某个按键,是枚举类型,KeyChar是用户按下按键对应的Unicode编码字符。那么这样我就就能拿到用户输入的字符串和用户按下的按键。用户输入密码是一个循环的过程,当用户按下按键输入密码时候设置不显示字符,然后在相同位置打印一个*号,最后判断用户是否按下了回车键,这样就结束了整个密码输入过程。

具体代码如下

//控制台输入密码显示星号

      //定义一个字符串接收用户输入的内容
      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();

最终实现效果如下

 类似资料:
  • 本文向大家介绍python实现在控制台输入密码不显示的方法,包括了python实现在控制台输入密码不显示的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python实现在控制台输入密码不显示的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 本文向大家介绍shell脚本实现输入密码显示星号,包括了shell脚本实现输入密码显示星号的使用技巧和注意事项,需要的朋友参考一下 补充:Shell输入密码时关闭屏幕回显  stty -echo read -p “请输入使用者密码: ” PASS stty echo 这样在输入密码的时候就不会显示了 如果大家感觉以上介绍的不够细致,大家可以参考下这篇文章: Shell脚本中实现把输入的密码转换为*

  • 本文向大家介绍linux sudo密码输入时显示星号的操作方法,包括了linux sudo密码输入时显示星号的操作方法的使用技巧和注意事项,需要的朋友参考一下 大家都知道我们在输入linux sudo密码的时候终端是不显示任何东西的,虽然这样安全,但是我们不知道我们按下的密码到底输入进去了没有,如果可以像在网站上登录账号密码的时候显示星号多好。 操作 其实要实现这个很简单,首先编辑sudo的配置文

  • 问题内容: 如何从控制台输入中屏蔽密码?我正在使用Java 6。 我尝试使用,但无法使用。一个完整的例子可能实际上对我有帮助。 这是我的代码: 我收到 问题答案: 一个完整的例子?运行以下代码:(注意:此示例最好在控制台中运行,而不是从IDE内部运行,因为在这种情况下System.console()方法可能返回null。)

  • 我需要在Java写一个小程序,要求一个人输入一个Pin码。所以我需要用星号(*)而不是数字隐藏Pin。我怎么能那样做? 到目前为止,这是我的代码: 实际上这个程序现在起作用,但我想增加一个功能,显示像“***”或“**”等的Pin。(当人员进入时,控制台中是自己的Pin)。我找到了可以完全隐藏别针的东西,但我不想这样。我要带星号的别针 有什么想法吗?谢谢

  • 本文向大家介绍winform 实现控制输入法,包括了winform 实现控制输入法的使用技巧和注意事项,需要的朋友参考一下 这里文章写出来并不是为了炫耀什么,只是觉得发现些好东西就分享出来而已,同时也做个记录,方便以后查找 开始正文 1、先介绍本文会用到的windows的API,网上有很详细的资料,我这里就只简要说明一下   ImmGetContext(IntPtr hwnd):获取当前正在输入的