Есть ли функция для чтения всей консоли? - PullRequest
0 голосов
/ 04 мая 2020

Я делаю программу на C#, и я хотел бы, чтобы программа выполняла что-то вроде этого:

while (true)
{
    var Key = Console.ReadKey();
    if (Key.Key == ConsoleKey.Backspace)
    {
        Console.SetCursorPosition(0, Console.CursorTop - 1);
        Console.Write(new string(' ', Console.WindowWidth));
    }
    else
    {
        Console.ReadLine();
    }
}

, а затем делала что-то вроде:

Console.ReadAllTextInConsole

чтобы получить весь текст в данный момент в окне консоли и поместить его в строку. Это возможно?

1 Ответ

1 голос
/ 04 мая 2020

Я сделал это без удаления последней строки, но он должен сделать то, что вы искали, попробуйте:

class Program
{
    static void Main(string[] args)
    {
        var console = new ConsoleV2();

        while (true)
        {
            var input = Console.ReadLine();
            if (input != "print")
            {
                console.WriteLine(input);
            }
            else
            {
                Console.WriteLine(console.GetOutput());
            }
        }
    }
}

public class ConsoleV2
{
    private readonly StringBuilder _stringBuilder;

    public ConsoleV2()
    {
        _stringBuilder = new StringBuilder();
    }

    public void Write(string format, params object[] args)
    {
        _stringBuilder.Append(string.Format(format, args));
        Console.Write(format, args);
    }

    public void WriteLine(string format, params object[] args)
    {
        _stringBuilder.AppendLine(string.Format(format, args));
        Console.WriteLine(format, args);
    }

    public string GetOutput()
    {
        return _stringBuilder.ToString();
    }
}
...