c# - 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
解决方案
推荐阅读
- angular - 无法加载资源:Angular 5
- react-native - 如何对此路径应用填充?
- java - 如何在 docx4j pdf 生成中删除签名“## 评估仅使用 ##”?
- magento2 - Magento 2 块模板路径
- json - 在 MVC 中使用 Json 时清除会话值
- dependency-injection - 在容器中创建服务以将依赖项注入类的问题
- arangodb - ArangoJS collection.save() 的返回值是多少?
- c++ - 使用点云库 (PCL) 时的 Boost 问题
- javascript - 放置在两个不同选项卡中的同一类上的 jQuery 切换功能不起作用
- php - 本地主机上的 PhpStorm Laravel 社交名流重定向