gpt4 book ai didi

c# - 如何将文本保留在控制台顶部?

转载 作者:行者123 更新时间:2023-12-04 15:53:51 25 4
gpt4 key购买 nike

我试图让我的控制台应用程序自动滚动,但将文本保持在顶部。文本历史记录必须是可访问的,所以 Console.Clear不可行。

是否有任何方法可以检测控制台何时滚动或调整当前 Y 位置的任何方法,因为我知道当您的文本即将离开屏幕时控制台会滚动。我想要同样的效果,但要将最新的行保留在窗口的顶部。任何帮助表示赞赏,谢谢!

最佳答案

您可以使用 Console.SetWindowPosition() 方法。 *

Parameters
left Int32
The column position of the upper left corner of the console window.

top Int32
The row position of the upper left corner of the console window.



这是一个示例来演示:
static void Main(string[] args)
{
int i = 0;
while (true)
{
Console.ReadKey(false);
Console.WriteLine($"You are currently at line #{++i}");
Console.SetWindowPosition(0, i - 1);
}
}

结果:

Scroll Console to Top

请注意,如果您接近 Console.BufferHeight 的值,您可能会收到 ArgumentOutOfRangeException,也就是说,当新位置(顶部)大于 Console.BufferHeight - Console.WindowHeight 时,您可能需要考虑这一点。我会添加一个简单的条件来处理这种情况。例子:
int newTop = i - 1;
if (newTop + Console.WindowHeight <= Console.BufferHeight)
{
Console.SetWindowPosition(0, newTop);
}

..但您可能希望以不同的方式处理此问题(例如,随时增加缓冲区、更改窗口大小等)

* 不要被方法的名称误导。这里的“窗口”并不意味着操作系统术语(边框等)中的实际桌面/控制台窗口。相反,它指的是字符缓冲区的当前显示窗口。要移动实际的控制台窗口,您必须使用 SetWindowPos Windows API 函数。 Example

关于c# - 如何将文本保留在控制台顶部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60167843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com