public async Task <string> ReadLineOnPositionAsync(Func <int> leftIndentResolver, int top) { var input = string.Empty; while (true) { _consoleAbstraction.SetCursorPosition(leftIndentResolver.Invoke() + input.Length, top); var key = await _consoleAbstraction.ReadKeyAsync(); _consoleAbstraction.ClearLine(leftIndentResolver.Invoke(), top); if (key.Key == ConsoleKey.Enter) { return(input); } if (key.Key == ConsoleKey.Backspace) { if (input.Length > 0) { input = input.Remove(input.Length - 1); } } else { input += key.KeyChar; } _consoleAbstraction.WriteOnPosition(input, leftIndentResolver.Invoke(), top); } }
public void SetCursorAfterPrompt() { lock (_consoleAbstraction) { _consoleAbstraction.SetCursorPosition(Prompt.Length, _height); } }
public void Stop() { _isStarted = false; _debugTextBox.Clear(); _remoteTextBox.Clear(); _consoleAbstraction.Clear(); _consoleAbstraction.SetCursorPosition(0, 0); }