Добрый день. Я ищу способ очистить не все консоли (например, Console.Clear ()). У меня есть фиксированный текст ниже, который должен быть там всегда. И я хочу переписать только текст выше. Узнайте способ очистки одной строки здесь почти в той же самой топи c.
static void Main(string[] args)
{
FixedText();
Console.SetCursorPosition(0, 0);
string a = "This is the test programm\n" + "press any key";
Console.WriteLine(a);
Console.ReadKey(true);
ClearTheConsole1();
string b = "Text was successfully changed";
Console.WriteLine(b);
Console.ReadKey();
}
// Method for fixed text below the main text area
public static void FixedText()
{
Console.SetCursorPosition(0, 5);
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("This text must be fixed here");
Console.ResetColor();
}
// Method for clearing the current line
public static void ClearCurrentConsoleLine()
{
int currentLineCursor = Console.CursorTop;
Console.SetCursorPosition(0, Console.CursorTop);
Console.Write(new string(' ', Console.WindowWidth));
Console.SetCursorPosition(0, currentLineCursor);
}
Далее я использую метод ClearCurrent ConsoleLine, чтобы создать другую для очистки всех строк выше с использованием Console.WindowTop и его работало почти приятно Но потом я решаю изменить условия проверки с> на <(потому что решаю, что проверка позиции лучше с низких на высокие значения и не хочу использовать && проверки), и до сих пор работает. После этого я вернулся, чтобы начать, но был сбит с толку, потому что теперь программа просто игнорирует все мои проверки WindowTop и делает так, будто я вызываю только ClearCurrentConsoleLine. И я ничего не меняю в Main. Так что я действительно не понимаю, как это происходит. Это мои два помощника. </p>
// Method for clearing the main text area
public static void ClearTheConsole1()
{
if (Console.WindowTop < 2)
{
Console.SetCursorPosition(0, Console.CursorTop - 1);
ClearCurrentConsoleLine();
}
else if (Console.WindowTop < 3)
{
for (int i = 0; i < 2; i++)
{
Console.SetCursorPosition(0, Console.CursorTop - 1);
ClearCurrentConsoleLine();
}
}
else if (Console.WindowTop < 4)
{
for (int i = 0; i < 3; i++)
{
Console.SetCursorPosition(0, Console.CursorTop - 1);
ClearCurrentConsoleLine();
}
}
else
{
for (int i = 0; i < 4; i++)
{
Console.SetCursorPosition(0, Console.CursorTop - 1);
ClearCurrentConsoleLine();
}
}
public static void ClearTheConsole2()
{
if (Console.WindowTop > 3)
{
for (int i = 0; i < 4; i++)
{
Console.SetCursorPosition(0, Console.CursorTop - 1);
ClearCurrentConsoleLine();
}
}
else if (Console.WindowTop > 2)
{
for (int i = 0; i < 3; i++)
{
Console.SetCursorPosition(0, Console.CursorTop - 1);
ClearCurrentConsoleLine();
}
}
else if (Console.WindowTop > 1)
{
for (int i = 0; i < 2; i++)
{
Console.SetCursorPosition(0, Console.CursorTop - 1);
ClearCurrentConsoleLine();
}
}
else
{
Console.SetCursorPosition(0, Console.CursorTop - 1);
ClearCurrentConsoleLine();
}
}
До того, как второй метод работал хоть как-то, теперь он вообще не работает. Пожалуйста, скажите мне, что не так.