Можно ли выводить текст приложения консоли С# на уже нанесенные метки? Я видел некоторые собственные консольные приложения, которые могут это сделать.
Таким образом, на экране пользователь видит:
Прогресс: 1% или прогресс: 50% в зависимости от того, когда метка обновлена (и прогресс метки остается в том же месте, в то время как обновляется только процентная доля прогресса.
Вместо того, чтобы я знаю, как это сделать в настоящее время, это console.writeLine, который будет создавать отдельную строку для каждого обновления Progress.
EG:
Прогресс: 1%
Прогресс: 2%
Да, вы можете это сделать.
Вы можете использовать Console.SetCursorPosition, чтобы переместить курсор после записи.
Например:
Console.WriteLine("Starting algorithm...");
int line = Console.CursorTop;
for (int i=0;i<100;++i)
{
Console.SetCursorPosition(0,line);
Console.Write("Progress is {0}% ",i); // Pad with spaces to make sure we cover old text
Thread.Sleep(100);
}
Console.SetCursorPosition(0,line);
Console.WriteLine("Algorithm Complete. "); // Pad with spaces to make sure we cover old text
Посмотрите Console.SetCursorPosition
Хотя я уже принял ответ: вот динамический пример для следующего парня:
private static List<screenLocation> screenLocationsBasic = new List<screenLocation>();
public class screenLocation
{
public int Left { get; set; }
public int Top { get; set; }
public screenLocation(int left, int top)
{
this.Left = left;
this.Top = top;
}
}
Затем во время фазы рисования шаблона вы можете добавлять динамические элементы в зависимости от количества элементов в вашем цикле:
screenLocationsBasic.Add(new screenLocation(Console.CursorLeft , Console.CursorTop ));
Затем во время обработки данных вы можете обновить только это местоположение в зависимости от того, с каким предметом вы имеете дело:
Console.SetCursorPosition(screenLocationsBoth[pos].Left, screenLocationsBoth[pos].Top);
Затем вам нужно всего лишь передать pos (позиция элемента в вашем цикле).
Вы можете очищать окно и каждый раз перерисовывать экран, который должен быть достаточно быстрым, чтобы выглядеть так, как будто все изменилось.