c# 在旧行上方的控制台中添加新行
c# adding new lines to a console above old lines
static void Main(string[] args)
{
int top, left;
Console.WriteLine();
Console.Write("Type here: ");
for (int i = 0; i < 99; i++)
{
top = Console.CursorTop;
left = Console.CursorLeft;
Console.SetCursorPosition(0, Console.CursorTop - 1);
Console.WriteLine("hi" + Environment.NewLine);
Console.SetCursorPosition(left, top);
}
Console.ReadKey();
}
我希望结果有 100 "hi" 高于 1 "Type Here: " 并且我希望能够在打印出你好之前输出 "Type Here: " 我希望得到任何帮助,因为我已经坚持了一段时间。
恕我直言,混合正常 "stdio" 输出和光标/window / 缓冲区操作不是一个好主意,但无论如何。试试这个:
static void Main(string[] args)
{
int top;
Console.WriteLine();
Console.Write("Type here: ");
Console.WriteLine();
for (int i = 0; i < 99; i++)
{
Console.WriteLine("hi" + Environment.NewLine);
}
top = Console.CursorTop;
Console.MoveBufferArea(0, top - 199, Console.WindowWidth, 1, 0, top);
Console.SetCursorPosition(11, Console.CursorTop);
Console.ReadKey();
}
请注意,这在很大程度上取决于控制台缓冲区设置。
您应该考虑使用例如
设置缓冲区
Console.SetBufferSize(80, 500);
static void Main(string[] args)
{
int top, left;
Console.WriteLine();
Console.Write("Type here: ");
for (int i = 0; i < 99; i++)
{
top = Console.CursorTop;
left = Console.CursorLeft;
Console.SetCursorPosition(0, Console.CursorTop - 1);
Console.WriteLine("hi" + Environment.NewLine);
Console.SetCursorPosition(left, top);
}
Console.ReadKey();
}
我希望结果有 100 "hi" 高于 1 "Type Here: " 并且我希望能够在打印出你好之前输出 "Type Here: " 我希望得到任何帮助,因为我已经坚持了一段时间。
恕我直言,混合正常 "stdio" 输出和光标/window / 缓冲区操作不是一个好主意,但无论如何。试试这个:
static void Main(string[] args)
{
int top;
Console.WriteLine();
Console.Write("Type here: ");
Console.WriteLine();
for (int i = 0; i < 99; i++)
{
Console.WriteLine("hi" + Environment.NewLine);
}
top = Console.CursorTop;
Console.MoveBufferArea(0, top - 199, Console.WindowWidth, 1, 0, top);
Console.SetCursorPosition(11, Console.CursorTop);
Console.ReadKey();
}
请注意,这在很大程度上取决于控制台缓冲区设置。 您应该考虑使用例如
设置缓冲区Console.SetBufferSize(80, 500);