Konsola - ReadLine() i przechwytywanie znaku.

0

Witam!
Mam mały problem z konsolą. Użytkownik podaje mi jakąś wartość, a ją przypisuję do zmiennej metodą Console.ReadLine(). Chciałbym jednak, żeby w przypadku gdy użytkownik wpisując treść kliknął klawisz Escape, to żebym mógł przestać pobierać od niego znaki i przekierować go do menu. Kombinowanie z Console.ReadKey() nic mi nie dało. Byłbym naprawdę wdzięczny, gdybyście mi pomogli. Z góry dziękuję.
Pozdrawiam!

0

Dlaczego z ReadKey() Ci nie wyszło?

W pętli czytasz wszystko co wciska user, dopóki nie wciśnie escape. Użyj do tego StringBuildera zamiast string. Pokaż to co udało Ci się sklecić to poprawimy ;]

0
StringBuilder sb = new StringBuilder();
char c;
while ((c = Console.ReadKey().KeyChar) != (char)ConsoleKey.Escape)
{
    sb.Append(c);
} 

Kod działa, tyle, że naciśnięcie Escape'a powoduje pojawienie się na ekranie niechcianej strzałki (symbol Esc?) oraz występują problemy z kasowaniem znaków.

0
Anonim1024 napisał(a)
StringBuilder sb = new StringBuilder();
char c;
while ((c = Console.ReadKey().KeyChar) != (char)ConsoleKey.Escape)
{
    sb.Append(c);
} 

Kod działa, tyle, że naciśnięcie Escape'a powoduje pojawienie się na ekranie niechcianej strzałki (symbol Esc?) oraz występują problemy z kasowaniem znaków.

Jeżeli nie chcesz, żeby wyświetlał na ekranie tego znaku, to użyj ReadKey(false). W tym przypadku musisz wyświetlać samemu wczytane znaki. Jeżeli chodzi o usuwanie to też samemu musisz to wykombinować. Pomoże Ci w tym Console.CursorLeft. Zastanów się czy ten escape jest Ci na pewno potrzebny ;]

1 użytkowników online, w tym zalogowanych: 0, gości: 1