首页 > 解决方案 > Writeline 的 Esc 输入剪切

问题描述

所以我尝试用 ConsoleKeyInfo 编写用户输入。其作品。比我尝试在按下 Esc 时实现取消。它也有效,但它切断了我的一些 Writeline。当我通过检查例如 M 尝试相同的代码时,它工作得很好!

有人能帮忙吗?

我的代码:

class Program
    {
        static void Main()
        {
            while (true)
            {
                string eingabeArtikelnummer, eingabePlatzalter;


                Console.Clear();
                Console.Write("Ein neuer Artikel wird angelegt:\n\nGeben Sie die Artikelnummer an: ");
                eingabePlatzalter = SteuerungUndEingabe();

                if (eingabePlatzalter == ConsoleKey.Escape.ToString()) { break; }
                else { eingabeArtikelnummer = eingabePlatzalter; }
            }
            WartenAufUser();
        }

        static string SteuerungUndEingabe()
        {
            ConsoleKey input;
            string userEingabe = null;
            do
            {
                input = Console.ReadKey().Key;

                if (input == ConsoleKey.Escape)
                {
                    userEingabe = input.ToString();
                    break;
                }

                userEingabe += input.ToString();

            } while (input != ConsoleKey.Enter);

            return (userEingabe);
        }

        static void WartenAufUser()
        {
            Console.WriteLine("----------------------------------------------------------------------------------------\n\nBeliebige Taste druecken um ins Menue zu gelangen!");
            while (Console.ReadKey() == null) { };
        }
    }
}

这是控制台中的输出:

在此处输入图像描述

应该是这样的:

在此处输入图像描述

编辑:

所以我问我的老师如何解决这个问题。他不知道为什么会发生,但他建议我绕过问题并将我的 Writeline 更改为

Console.WriteLine("x\n----------------------------------------------------------------------------------------\n\nBeliebige Taste druecken um ins Menue zu gelangen!");

“x\n”奇迹般地避免了这个问题:D

标签: c#inputconsoleconsole.writeline

解决方案


推荐阅读