Проблема с прокруткой окна консоли C# с длинным текстомC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Проблема с прокруткой окна консоли C# с длинным текстом

Сообщение Гость »


Я использую окно консоли в dotnet C# уже долгое время.

У меня никогда не возникало проблем на моем предыдущем ноутбуке с Windows 10, но на моем новом ноутбуке с Windows 11:

Я сталкивался со всем: от переполнения BUFFER Swash TEXT до ARTIFACTS, проблем с ПРОКРУТИРОВАННЫМ КОПИРОВАНИЕМ и многого другого.

Я попытался подробнее ознакомиться с окном консоли:

if (сброс) { Консоль.КурсорЛефт = 0; Консоль.КурсорТоп = 0; Console.SetCursorPosition(Console.CursorLeft, Console.CursorTop); } еще { Int32 слева, сверху, размер; слева = 16; верх = 32; размер = (слева * сверху); Int32ufferSize, размер окна; ufferSize = (Console.BufferWidth * Console.BufferHeight); windowSize = (Console.WindowWidth * Console.WindowHeight); вар is_EXCEED_invalid = ложь; is_EXCEED_invalid = is_EXCEED_invalid || (размер = Console.BufferHeight) верно; вар is_EXCEED_window = ложь; is_EXCEED_window = is_EXCEED_window || (размер >= размер окна) имеет значение true; is_EXCEED_window = is_EXCEED_window || (слева >= Console.WindowWidth) верно; is_EXCEED_window = is_EXCEED_window || (вверху >= Console.WindowHeight) верно; Логическое значение isExceedCheck; isExceedCheck = ложь; isExceedCheck = isExceedCheck || is_EXCEED_invalid имеет значение true; isExceedCheck = isExceedCheck || is_EXCEED_buffer имеет значение true; isExceedCheck = isExceedCheck || is_EXCEED_window имеет значение true; если (isExceedCheck) { Console.BackgroundColor = ConsoleColor.DarkRed; Console.ForegroundColor = ConsoleColor.Red; Консоль.Очистить(); } еще { Консоль.КурсорЛефт = 16; Консоль.КурсорТоп = 40; Console.SetCursorPosition(Console.CursorLeft, Console.CursorTop); } Console.BackgroundColor = ImmutableOneFirst.BackgroundColor; Console.ForegroundColor = ImmutableOneFirst.ForegroundColor; } если (скрыть) { Console.CursorVisible = ложь; } еще { Console.CursorVisible = правда; } если (ясно, верно) { Консоль.Очистить(); } еще "ложь".ToString(); В процессе ознакомления с окном консоли и бесконечных обсуждений в чате gpt я понял, что окна консоли устаревают и никто их не заменяет, один из примеров — на этом конкретном ноутбуке, я не могу установить положение окна на ЛЮБОЕ значение, включая СОБСТВЕННОЕ ТЕКУЩЕЕ значение.

Имея все это в виду, я написал следующий код, чтобы попытаться обнаружить и проверить различные переполнения консоли, затем я сделал то же самое для фактической СТРОКИ БОЛЬШОГО СОДЕРЖИМОГО, которую я показываю ранее.

Консоль говорит, что НЕТ ПЕРЕПОЛНЕНИЯ, поскольку РАЗМЕР БУФЕРА и РАЗМЕР ОКНА больше, чем РАЗМЕР СОДЕРЖИМОГО СТРОКИ.

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

Как мне это решить?

Я попытался обнаружить переполнение и принять меры в отношении него, но оказалось, что переполнения не было, поскольку числа не превышали друг друга, но есть фактическое видимое переполнение и никаких действий по изменению размера. буфер существенно помогает
Ответить Пред. темаСлед. тема

Быстрый ответ, комментарий, отзыв

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»