C# очистить консоль последнего элемента и заменить новый? Анимация Консоли
следующий код CSharp (просто образец):
Console.WriteLine("Searching file in...");
foreach(var dir in DirList)
{
    Console.WriteLine(dir);
}
Выводит Результаты В Виде:
Searching file in...
dir1
dir2
dir3
dir4
.
.
.
вопрос? Как я могу получить вывод как
Searching file in...
dir1  
(затем очистить dir1 и распечатать dir2 и так далее) все следующие dir имя wiil заменить предыдущий dir
7 ответов
Если ваша проблема заключается в очистке консоли, используйте метод Console.Clear();, если это не так, используйте это, чтобы заменить последнюю строку;
Console.WriteLine("Searching file in...");
        foreach(var dir in DirList)
         {
           Console.SetCursorPosition(1,0);
           Console.WriteLine(dir);
         }
использовать Console.SetCursorPosition установить курсор в начало последней строки и переписать его.
что-то типа:
Console.WriteLine(dir);
Console.SetCursorPosition(0, Console.CursorTop - 1);
EDIT:
согласно вашему комментарию, вы можете сделать следующее:
Console.WriteLine("Searching file in...");
foreach (var dir in DirList)
{
    ClearCurrentConsoleLine();
    Console.Write(dir);
}
С ClearCurrentConsoleLine определено как:
public static void ClearCurrentConsoleLine()
{
    int currentLineCursor = Console.CursorTop;
    Console.SetCursorPosition(0, Console.CursorTop);
    for (int i = 0; i < Console.WindowWidth; i++)
        Console.Write(" ");
    Console.SetCursorPosition(0, currentLineCursor);
}
вы можете печатать с помощью "\r", таким образом, курсор не прыгает строку, и вы можете переписать ее.
foreach(var dir in DirList)
     {
       Console.Write("\r{0}%           ",dir);
     }
используйте пробелы после числа, чтобы убедиться, что все стерто, и используйте .Написать вместо WriteLine потому что вы не хотите добавлять "\n"
просто следите за текущей позицией курсора, сохраняя значения Console.CursorLeft и Console.CursorTop свойства.  Затем напишите, сбросьте и повторите.  Или, скорее, в этом случае перезагрузите, напишите и повторите.
Console.WriteLine("Searching file in...");
// save the current cursor position
var cursorLeft = Console.CursorLeft;
var cursorTop = Console.CursorTop;
// build a format string to establish the maximum width do display
var maxWidth = 60;
var fmt = String.Format("{{0,-{0}}}", maxWidth);
foreach (var dir in dirList)
{
    // restore the cursor position
    Console.SetCursorPosition(cursorLeft, cursorTop);
    // trim the name if necessary
    var name = Path.GetFileName(dir);
    if (name.Length > maxWidth)
        name = name.Substring(0, maxWidth);
    // write the trimmed name
    Console.Write(fmt, name);
    // do some work
}
Console.WriteLine(); // end the previous line
хотя это довольно старый пост, я опубликую свой подход. Может быть, это поможет кому-то
Console.SetCursorPosition(0, Console.CursorTop);
Console.Write(new String(' ', Console.WindowWidth));
Console.SetCursorPosition(0, Console.CursorTop);
Console.Write(dir);
Я думаю, что это то, что вы хотите ;)
Console.WriteLine("Searching file in...");
    foreach(var dir in DirList)
     {
       Console.Write(\"r" + dir);
     }
это сделает то, что я думаю ты спрашиваешь:
string s = "\r";
s += new string(' ', Console.CursorLeft);
s += "\r";
Console.Write(s);
по существу то же самое, что и @digEmAll, но он использует фактическое # символов вместо консоли.WindowWidth