Консоль.Очистить(); не очищает всю консоль

У меня есть часть в моем приложении, которая генерирует больше вывода, чем помещается в окно консоли. Меня устраивает прокрутка сгенерированных строк, но при очистке окна консоли исчезает только последняя часть. Все, что выше высоты окна консоли, все еще там, когда я прокручиваю вверх.

Теперь, есть ли способ стереть все содержимое консоли, даже буфер прокрутки? Или единственное решение - разработать пейджер?

Спасибо за ваши ответы!

Обновлено:

Я написал следующий код как POC:

for (int i = 0; i < 100; i++)
{
    Console.WriteLine(i);
}
Console.Clear();
Console.ReadKey();

Когда я запускаю этот код, будут удалены только строки с 71 по 100.

Не могу воспроизвести. При вызове Console.Clear() буфер также очищается. Это также соответствует документации: learn.microsoft.com/en-us/dotnet/api/… .

wohlstad 16.02.2023 12:32

Какая ОС? Что за консоль?

shingo 16.02.2023 12:40

Windows 11, IDE: Visual Studio 2022

Alex 16.02.2023 12:47

Использование метода Clear эквивалентно вызову команды MS-DOS cls в окне командной строки. При вызове метода Clear курсор автоматически перемещается в верхний левый угол окна, а содержимое экранного буфера становится пустым с использованием текущих цветов фона переднего плана.

CharithJ 16.02.2023 12:49

Может у тебя еще что-то пишет даже после очистки? Покажите свой полный код.

CharithJ 16.02.2023 12:49

@CharithJ К сожалению, мой код слишком длинный для публикации. Итак, я отредактировал свой вопрос и добавил короткий пост.

Alex 16.02.2023 13:00

Или, может быть, я что-то напутал с моей Visual Studio??

Alex 16.02.2023 13:01

Visual Studio вообще не участвует, если вы запускаете консольный процесс.

Klaus Gütter 16.02.2023 13:06
stackoverflow.com/questions/52127653/…
Hans Passant 16.02.2023 13:24

Следующее может быть полезным: API классической консоли в сравнении с последовательностями виртуальных терминалов , Консоль Windows и дорожная карта экосистемы терминалов , Последовательности виртуальных терминалов консоли , Функции консоли,

user09938 16.02.2023 16:04

Вы включили устаревший режим консоли ? Также попробуйте отключить прокрутку вперед

shingo 17.02.2023 04:47
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Калькулятор CGPA 12 для семестра
Калькулятор CGPA 12 для семестра
Чтобы запустить этот код и рассчитать CGPA, необходимо сохранить код как HTML-файл, а затем открыть его в веб-браузере. Для этого выполните следующие...
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
О тренинге HTML JavaScript :HTML (язык гипертекстовой разметки) и CSS (каскадные таблицы стилей) - две основные технологии для создания веб-страниц....
Как собрать/развернуть часть вашего приложения Angular
Как собрать/развернуть часть вашего приложения Angular
Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?
Запуск PHP на IIS без использования программы установки веб-платформы
Запуск PHP на IIS без использования программы установки веб-платформы
Установщик веб-платформы, предлагаемый компанией Microsoft, перестанет работать 31 декабря 2022 года. Его закрытие привело к тому, что мы не можем...
Оптимизация React Context шаг за шагом в 4 примерах
Оптимизация React Context шаг за шагом в 4 примерах
При использовании компонентов React в сочетании с Context вы можете оптимизировать рендеринг, обернув ваш компонент React в React.memo сразу после...
0
12
74
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Спасибо за все ваши ответы!

Наконец, я решил это с помощью следующей escape-последовательности:

Console.Clear();
Console.WriteLine("\x1b[3J");

Эта последовательность удаляет все содержимое консоли. (Но он работает надежно только в том случае, если сначала вызывается команда очистки)

После этих двух строк консоль пуста, а полосы прокрутки удалены или отключены. Курсор находится на второй строке (и может быть несколько символов из последнего ввода). Чтобы предотвратить это, я снова вызвал команду очистки.

Я надеюсь, что это поможет кому-то с той же проблемой.

Другие вопросы по теме