我在C#2.0中有一个控制台应用程序项目需要在while循环中向屏幕写入内容。我不希望屏幕滚动,因为使用Console.Write或Console.Writeline方法将继续以增量方式在控制台屏幕上显示文本,从而开始滚动。
我希望将字符串写在同一位置。我怎么能这样做?
由于
答案 0 :(得分:50)
使用Console.SetCursorPosition设置位置。如果您需要先确定,请使用Console.CursorLeft和Console.CursorTop属性。
答案 1 :(得分:1)
写入循环进度的函数。您的循环计数器可用作x位置参数。这将在第1行打印,根据您的需要进行修改。
/// <summary>
/// Writes a string at the x position, y position = 1;
/// Tries to catch all exceptions, will not throw any exceptions.
/// </summary>
/// <param name="s">String to print usually "*" or "@"</param>
/// <param name="x">The x postion, This is modulo divided by the window.width,
/// which allows large numbers, ie feel free to call with large loop counters</param>
protected static void WriteProgress(string s, int x) {
int origRow = Console.CursorTop;
int origCol = Console.CursorLeft;
// Console.WindowWidth = 10; // this works.
int width = Console.WindowWidth;
x = x % width;
try {
Console.SetCursorPosition(x, 1);
Console.Write(s);
} catch (ArgumentOutOfRangeException e) {
} finally {
try {
Console.SetCursorPosition(origRow, origCol);
} catch (ArgumentOutOfRangeException e) {
}
}
}