C# Probleme mit Redkey() im "Escape" Fall

Wieso verschwindet der erste Buchstabe im folge WriteLine(), wenn ich auf „Esc“ tippe? Und wie kann ich dieses verhindern?

code:
using System;

namespace ConsoleEscapApp
{
class Program
{
static void Main(string[] args)
{
bool b=false;
do
{
Console.WriteLine(„Hello World!“);
ConsoleKeyInfo x = Console.ReadKey();
Console.WriteLine("");
} while (b==false);

    }
}

}

Hi @Tamara_Laura, nichts für ungut aber es gibt so Suchmaschinen zB ggle… und ohne die kommt man heutzutage nicht so gut zurecht, wie mit - grad im Programmiererleben. :smile: Selbst die gute Gemeinde hier ist in Vielem nicht so schnell und effektiv wie eine Suchmaschine: gleich der 1. Link zB erklärt dein Problem gut und die Lösung ist auch anbei!

Normal behavior, you’re printing the escape character to the console, so the following character will be a treated as a control character. You need to always hide Console.ReadKey and Console.Write the characters yourself (excluding the escape).

jscarle

May 23, 2020 at 14:05

https://duckduckgo.com/?q=Console.ReadKey+escape&t=newext&atb=v305-1&ia=web

Hier nochmal was zum rumprobieren am Wochenende: :slight_smile:

using System;
using System.Text;

class HelloWorld {
  static void Main() {
    bool schlussJetzt=false; string inputString;
    StringBuilder inputBuilder = new StringBuilder();

    do {
        Console.WriteLine("Hello World!");
        //ConsoleKeyInfo x = Console.ReadKey();
        while (true)
        {
            ConsoleKeyInfo inputKey = Console.ReadKey(true);
            if (inputKey.Key == ConsoleKey.Enter)
            {
                inputString = inputBuilder.ToString();
                break;
            }
            else if (inputKey.Key == ConsoleKey.Escape)
            {
                inputString = null;
                schlussJetzt=true;
                break;
            }
            else
                inputBuilder.Append(inputKey.KeyChar);
                Console.Write(inputKey.KeyChar);
        }
        Console.WriteLine("");
    } while (schlussJetzt==false);
    Console.WriteLine("Ciao World!");
  }
}
1 Like

Anbei nochmal 2 Links zu C# IDEs / Codeeditoren zum ausprobieren (ohne install) - die eine mit dem Code drin ist zwar komfortabler aber da rennt der Code irgend wie nicht gut, bei der 2. ist alles gut:

https://dotnetfiddle.net/U9auY4

https://www.onlinegdb.com/online_csharp_compiler

1 Like

danke, bestes wochenende

1 Like