c#中readkey,输入a,得到的为什么是A,输入8为什么得到的是D8
readkey得到的是键盘代码。键盘代码是一个枚举,比如说,D8代表数字区的8,A表示字母区的A。
无论是a和A,你按下的都是A这个键,所以一样。
你要读取字符用ReadChar
你要读取字符用Console.Read()
https://msdn.microsoft.com/zh-cn/library/471w8d85.aspx
https://msdn.microsoft.com/zh-cn/library/system.consolekeyinfo.aspx
你可以写
var key = Console.ReadKey();
if ((key.Modifiers & ConsoleModifiers.Control) != 0)
Console.WriteLine("你按下了ctrl");
/// <summary>
/// Read password from console
/// </summary>
/// <returns>password</returns>
public static string ReadPassword()
{
char[] revisekeys = new char[3];
revisekeys[0] = (char)0x08;
revisekeys[1] = (char)0x20;
revisekeys[2] = (char)0x08;
StringBuilder sb = new StringBuilder();
while (true)
{
ConsoleKeyInfo kinfo = Console.ReadKey(true);
if (kinfo.Key == ConsoleKey.Enter)
{
break;
}
if (kinfo.Key == ConsoleKey.Backspace)
{
if (sb.Length != 0)
{
int rIndex = sb.Length-1;
sb.Remove(rIndex, 1);
Console.Write(revisekeys);
}
continue;
}
sb.Append(Convert.ToString(kinfo.KeyChar));
Console.Write("*");
}
return sb.ToString();
}
搞定了,谢啦,但是那个revisekeys的char数组是干嘛用的