写入行的 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) { };
        }
    }
}

这是控制台中的输出

enter image description here

应该是这样的:

enter image description here

编辑:

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

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

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)