我正在尝试用C#做一个程序,它基本上是基于用户按下的键(例如:X=退出,D=断开连接等;)在c#中使用Console.ReadKey();
我遇到的问题是如何在Switch语句中使用ReadKey信息。有人能帮帮忙吗?代码如下。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Switch_Test
{
class Program
{
static void Main()
{
Console.WriteLine("Welcome. Please enter your command: ");
string chinput;
int input;
bool activated = false;
input = Console.ReadKey();
chinput = Convert.ToChar(input);
switch (chinput)
{
case 'x':
{
Console.WriteLine("You pressed x...");
break;
}
case 'y':
{
Console.WriteLine("You pressed y..");
break;
}
case 'd':
{
if (activated != true)
{
Console.WriteLine("Please activate first!");
break;
}
else
{
Console.WriteLine("Active..");
break;
}
}
case 'a':
{
if (activated != true)
{
activated = true;
Console.WriteLine("Activating..");
break;
}
else
{
activated = false;
Console.WriteLine("Deactivating.");
break;
}
}
default:
Console.WriteLine("Unknown Command.");
break;
}
}
}
}我知道这可能真的是错误的,但我最初是从Console.ReadLine();开始的,唯一的区别是我想让它在你按下一个键时激活一个函数,而不是必须按enter键或能够键入不同的键。提前感谢!
发布于 2011-08-09 07:09:16
首先,Convert.ToChar()不能在ConsoleKeyInfo结构上工作,所以这就是你有问题的原因,这个转换会抛出一个异常。
您不必将键转换为字符,相反,您可以打开.Key属性,它是一个包含每个键的枚举数:
var input = Console.ReadKey();
switch (input.Key) //Switch on Key enum
{
case ConsoleKey.X:
break;
case ConsoleKey.Y:
break;
}编辑:
input.KeyChar获取您尝试的第一个字符,然后您可以根据需要打开它,但它不能切换到不同的键,如箭头等。.KeyChar或将.Key与.Modifiers一起使用来检查当用户键入字母<代码>G213时是否按下了shift键
发布于 2011-08-09 07:37:27
您可以简单地将输入作为:
char input=Console.ReadKey().KeyChar;发布于 2016-11-22 21:34:22
使用Console.ReadKey()返回一个结构ConsoleKeyInfo类型。因此,您需要从该类型接收变量中的返回。然后打开键枚举器,它包含所有字符。
ConsoleKeyInfo chinput = Console.ReadKey();
switch (chinput.Key)
{
case ConsoleKey.X:
{
Console.WriteLine("You pressed x...");
break;
}
case ConsoleKey.Y:
{
Console.WriteLine("You pressed y..");
break;
}
case ConsoleKey.D:
{
if (activated != true)
{
Console.WriteLine("Please activate first!");
break;
}
else
{
Console.WriteLine("Active..");
break;
}
}
case ConsoleKey.A:
{
if (activated != true)
{
activated = true;
Console.WriteLine("Activating..");
break;
}
else
{
activated = false;
Console.WriteLine("Deactivating.");
break;
}
}
default:
Console.WriteLine("Unknown Command.");
break;
} https://stackoverflow.com/questions/6989647
复制相似问题