Как разрешить пользователю удалять текст, который уже был прочитан Console.ReadLine (); - PullRequest
1 голос
/ 28 апреля 2020

Мне интересно, как можно написать программу для чего-то вроде:

var text = Console.ReadLine ();

и позволить пользователю позже стереть текст, который прочитал. Тем не менее, нет четкого способа сделать это. Я знаю, что это можно сделать, так как есть некоторые текстовые редакторы, написанные на c#. Может ли кто-нибудь указать мне правильное направление?

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Все зависит от того, как вы хотите удалить строку.

Вы можете проверить Можно ли использовать Console.Clear для очистки только строки вместо всей консоли? , которая в основном заменяет заданная строка c с пустой строкой:

Документация SetCursorPosition

// Parameters left, top
Console.SetCursorPosition(0, Console.CursorTop - 1);
Console.Write(new string(' ', Console.WindowWidth)); 
Console.SetCursorPosition(0, Console.CursorTop);

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

Так что всякий раз, когда вы Writeline или Readline вам нужно увеличить счетчик, чтобы сохранить историю. Если вы хотите сделать это для более чем одной строки, тогда это станет еще сложнее.

1 голос
/ 28 апреля 2020

Для начала взгляните на методы, доступные для Console для соответствующей версии фреймворка, которую вы используете. Можно настроить положение курсора, что доставит массу удовольствия.

https://docs.microsoft.com/en-us/dotnet/api/system.console.setcursorposition?view=netcore-3.1

...