在.NET控制台应用程序中,是否可以始终在控制台中显示一行文本?

我想在控制台应用程序中添加一个简单的带宽监视器,我想知道是否可以随时在控制台窗口中保持一行。 我可以手动设置一些东西,将新的控制台输出传递给一个方法,该方法可以获取控制台的内容,清除控制台,在第一行添加带宽数据,然后将每行先前信息重写回控制台等。但是,这似乎是一种真正的hacky方式,并且我将被限制在控制台窗口中一次可见的行数(不滚动)。

任何的想法? 这有什么内置function吗? 例:

STATS: Downloaded: 2599b, Uploaded: 754b <- this always stays at the top constantly changing text constantly changing text constantly changing text constantly changing text constantly changing text constantly changing text constantly changing text constantly changing text constantly changing text constantly changing text constantly changing text constantly changing text 

您可以使用Console类的其他成员(例如CursorTopCursorLeft来“移动”光标。 如果将光标移动到行的开头,然后使用Console.Write ,它将“覆盖”该位置的数据。

这使您可以创建您正在描述的情境(通过移动光标,写入,然后向后移动)。

话虽这么说,我通常建议您在需要以特定方式呈现多个项目时立即使用GUI应用程序。 你会有更多的灵活性(而且可能会更简单)。

如果您不打算全屏运行,可以使用Console.Title

 for (int i = 0, j = 0; i < 10000; i++, j++) { top = Console.CursorTop; left = Console.CursorLeft; Console.SetCursorPosition(0, 0); Console.WriteLine("STATS: Downloaded: {0}b, Uploaded: {1}b", i, j); } 

这将使STATS保持在顶部,但是根据刷新率和下面的数据,它可能会变得难看。 基本上它会将文本放在控制台窗口的最顶部(位于滚动的顶部)。

正如Reed Copsey所说,你可以轻松地使用WinForm复制一个虚假的console application (只是一个简单的表单,在RichTextBox有一些格式化的文本)。 您可以轻松地完成您想要的任务,而且几乎不涉及大量的工作并获得预期的结果。

 int x = 0; while(x == 0) { Console.SetCursorPosition(1, 1); } 

这样的事情应该有效。 祝好运