Console.ReadKey();和 Switch 语句 - 使用字母 [英] Console.ReadKey(); and Switch statement - using letters

查看:27
本文介绍了Console.ReadKey();和 Switch 语句 - 使用字母的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 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;
}

  1. 您也可以使用 input.KeyChar 来获取您首先尝试的内容 - 字符,然后您可以根据需要打开它,但是很难打开不同的键,例如箭头等.
  2. 如果你关心字母是大写还是小写,你可以使用 .KeyChar 或使用 .Key.Modifiers 来检查是否移位用户键入字母时按下了键
  1. 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.
  2. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆