是否可以防止部分控制台在 .NET 中滚动?
Is it possible to keep portions of the console from scrolling in .NET?
图 1:底部用于滚动,而顶部用于保持不动。
所以我正在编写 CLI .NET Core 应用程序。
图像的顶部保持不变,而底部滚动到顶部下方。
如果能更直接地访问控制台,那就更容易了。但正如我们在 C# 中,我所知道的不存在这样的 (cross-platform) 访问。
那么,如果没有 platform-locking,我将如何在这里实现预期目标?
你可以试试这个,如果它能给你一个想法。基于此 post C# Console : How to make the console stop scrolling automatically?.
static readonly int maxLine = 10;
static int currentLine = 0;
static void Main(string[] args)
{
setHeader();
while (true)
{
writeLine("Please type and enter:");
string value = Console.ReadLine();
writeLine($"Your input is: {value}");
writeLine($"Current Line: {currentLine}");
if (currentLine > maxLine)
{
resetCursorPosition();
writeLine($"Your input is: {value}");
writeLine($"Current Line: {currentLine}");
}
}
}
private static void writeLine(string value)
{
Console.WriteLine(value);
currentLine = currentLine + 1;
}
private static void resetCursorPosition()
{
Console.Clear();
Console.SetCursorPosition(0, 0);
currentLine = 0;
setHeader();
}
private static void setHeader()
{
writeLine("----------------------------------------------");
writeLine("---------------MY CUSTOM HEADER---------------");
writeLine("----------------------------------------------");
}
输出:
图 1:底部用于滚动,而顶部用于保持不动。
所以我正在编写 CLI .NET Core 应用程序。
图像的顶部保持不变,而底部滚动到顶部下方。
如果能更直接地访问控制台,那就更容易了。但正如我们在 C# 中,我所知道的不存在这样的 (cross-platform) 访问。
那么,如果没有 platform-locking,我将如何在这里实现预期目标?
你可以试试这个,如果它能给你一个想法。基于此 post C# Console : How to make the console stop scrolling automatically?.
static readonly int maxLine = 10;
static int currentLine = 0;
static void Main(string[] args)
{
setHeader();
while (true)
{
writeLine("Please type and enter:");
string value = Console.ReadLine();
writeLine($"Your input is: {value}");
writeLine($"Current Line: {currentLine}");
if (currentLine > maxLine)
{
resetCursorPosition();
writeLine($"Your input is: {value}");
writeLine($"Current Line: {currentLine}");
}
}
}
private static void writeLine(string value)
{
Console.WriteLine(value);
currentLine = currentLine + 1;
}
private static void resetCursorPosition()
{
Console.Clear();
Console.SetCursorPosition(0, 0);
currentLine = 0;
setHeader();
}
private static void setHeader()
{
writeLine("----------------------------------------------");
writeLine("---------------MY CUSTOM HEADER---------------");
writeLine("----------------------------------------------");
}
输出: