c# – 根据用户击键更改控制台上的字符

c# – 根据用户击键更改控制台上的字符,第1张

概述我想要做的是根据用户按下的内容更改控制台. 所以我有一个控制台有三个选项,如下所示: > Option 1Option 2Option 3 基本上,如果用户按下向下箭头,控制台将如下所示: Option 1> Option 2Option 3 如果用户按下向上箭头,控制台将返回其初始状态. 我知道如何使用Console.ReadKey()读取用户的输入,但我不知道如何修改已经写 我想要做的是根据用户按下的内容更改控制台. @H_419_7@

@H_419_7@所以我有一个控制台有三个选项,如下所示:

@H_419_7@

>  Option 1Option 2Option 3
@H_419_7@基本上,如果用户按下向下箭头,控制台将如下所示:

@H_419_7@

Option 1>  Option 2Option 3
@H_419_7@如果用户按下向上箭头,控制台将返回其初始状态.

@H_419_7@我知道如何使用Console.ReadKey()读取用户的输入,但我不知道如何修改已经写入的输出.

@H_419_7@最后一点是,当用户按Enter键时,控制台不会创建新行,而是选择其中一个选项并调用委托.

解决方法 使用Console.ReadKey和一些变量来保持所选选项的状态并不难实现. @H_419_7@

@H_419_7@以下代码是您正在寻找的非常快速和懒惰的实现.花点时间自己正确地重写它 – 这是为了让你了解如何实现你想要的东西.

@H_419_7@

static voID Main(string[] args){    bool IsRunning = true;    int Selected = 1;    while (IsRunning)    {        ConsoleKeyInfo NextKey = new ConsoleKeyInfo();        if (Selected < 1)            Selected = 3;        else if (Selected > 3)            Selected = 1;        Console.Clear();        if (Selected == 1)            Console.Write("> ");        Console.Writeline("Option 1");        Console.Writeline();        if (Selected == 2)            Console.Write("> ");        Console.Writeline("Option 2");        Console.Writeline();        if (Selected == 3)            Console.Write("> ");        Console.Writeline("Option 3");        Console.Writeline();        Console.Write("Choose an option (Q to Quit): ");        while (!(NextKey.Key == ConsoleKey.DownArrow ||                NextKey.Key == ConsoleKey.UpArrow ||                NextKey.Key == ConsoleKey.Q ||                (NextKey.KeyChar >= '1' &&                NextKey.KeyChar <= '3')))        {            NextKey = Console.ReadKey();        }        switch (NextKey.Key)        {            case ConsoleKey.D1:                // Do something                break;            case ConsoleKey.D2:                // Do something                break;            case ConsoleKey.D3:                // Do something                break;            case ConsoleKey.DownArrow:                Selected++;                break;            case ConsoleKey.UpArrow:                Selected--;                break;            case ConsoleKey.Q:                IsRunning = false;                break;        }    }}
@H_419_7@代码将循环,而“Q”键尚未被按下以退出应用程序.

@H_419_7@按下向下或向上箭头将旋转可用选项.

@H_419_7@在按下1,2或3时,您将导致//在switch语句中执行某些行.您应该在此处调用每个选项存在的任何功能.

@H_419_7@为了使用所选选项更新“菜单”,将清除控制台输出,然后重新输出.通过Selected变量识别正确的选项.

@H_419_7@还有其他几种方法可以实现上述方法,有些方面更为整洁.我想告诉你从哪里开始.我并不是说这是最好或最整洁的解决方案.

@H_419_7@编辑

@H_419_7@出现了一个想法 – 您想使用Enter来选择该选项.

@H_419_7@我已经修改了一些代码以提供该功能:

@H_419_7@

while (!(NextKey.Key == ConsoleKey.DownArrow ||            NextKey.Key == ConsoleKey.UpArrow ||            NextKey.Key == ConsoleKey.Q ||            NextKey.Key ==  ConsoleKey.Enter))    {        NextKey = Console.ReadKey();    }    switch (NextKey.Key)    {        case ConsoleKey.Enter:            // Do something depending on Selected option            switch (Selected)            {                case 1:                    // Do something                    break;                case 2:                    // Do something                    break;                case 3:                    // Do something                    break;            }            break;        case ConsoleKey.DownArrow:        ...
总结

以上是内存溢出为你收集整理的c# – 根据用户击键更改控制台上的字符全部内容,希望文章能够帮你解决c# – 根据用户击键更改控制台上的字符所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1233296.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存