Console.ReadKey();和 Switch 语句 - 使用字母 [英] Console.ReadKey(); and Switch statement - using letters
问题描述
我正在尝试使用 Console.ReadKey(); 在 C# 中制作一个程序,该程序基本上基于用户按下的键(例如 X = Quit、D = Disconnect 等;)运行.在 C# 中
I'm trying to make a program in C# that basically functions based on the key a user presses (ex. X = Quit, D = Disconnect, etc;) by using Console.ReadKey(); in c#
我遇到的问题是如何在 Switch 语句中使用 ReadKey 信息.有人可以帮忙吗?代码如下.
The problem I'm running into is how to use the ReadKey info in a Switch statement.. Can someone help please? The code is below.
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 键或能够输入不同的键.提前致谢!
I know that's probably really wrong but I originally started with Console.ReadLine(); , the only difference is I want it to activate a function when you press a single key rather than having to hit enter or being able to type in different keys. Thanks in advance!
推荐答案
首先,Convert.ToChar()
对 ConsoleKeyInfo
结构不起作用,所以为什么你有问题,这个转换会抛出一个异常.
First of all, Convert.ToChar()
doesn't work on ConsoleKeyInfo
structure, so that's why you have problems, this conversion will throw an Exception.
您不必将键转换为字符,相反,您可以打开 .Key
属性,该属性是包含每个键的可枚举:
You don't have to convert your key to character, instead, you can switch on .Key
property, which is an enumerable that contains every 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
来检查是否移位用户键入字母时按下了键
- You can also use
input.KeyChar
to get what you tried first - character, then you can switch on it if you want to, but it's harded to switch on different keys like arrows etc. - If you care if letter is capital/small, you can use
.KeyChar
or use.Key
with.Modifiers
to check if shift key was pressed when user typed the letter
这篇关于Console.ReadKey();和 Switch 语句 - 使用字母的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!