Вы можете использовать метод Console.SetWindowPosition()
. *
Параметры
left
Int32
Положение столбца в верхнем левом углу окна консоли.
top
Int32
Положение строки в верхнем левом углу окна консоли.
Вот пример для демонстрации:
static void Main(string[] args)
{
int i = 0;
while (true)
{
Console.ReadKey(false);
Console.WriteLine($"You are currently at line #{++i}");
Console.SetWindowPosition(0, i - 1);
}
}
Результат:
Обратите внимание, что если вы приближаетесь к значению Console.BufferHeight
, вы можете получить ArgumentOutOfRangeException, то есть, когда новая позиция (верх) больше Console.BufferHeight - Console.WindowHeight
, так что вы можете принять это во внимание. Я бы добавил простое условие для обработки этого случая. Пример:
int newTop = i - 1;
if (newTop + Console.WindowHeight <= Console.BufferHeight)
{
Console.SetWindowPosition(0, newTop);
}
.. но вы, возможно, захотите обработать это по-другому (например, увеличьте буфер при go, измените размер окна и т. Д. c.)
* Не вводите в заблуждение название метода. «Окно» здесь не означает фактическое окно рабочего стола / консоли в терминах ОС (границы и т. Д. c.). Вместо этого это относится к текущему отображаемому окну буфера символов. Чтобы переместить фактическое окно консоли , вам нужно использовать функцию SetWindowPos
Windows API. Пример .