使用C#2.0中的Console.Write在相同位置写入字符串

时间:2008-11-12 11:31:55

标签: c# .net

我在C#2.0中有一个控制台应用程序项目需要在while循环中向屏幕写入内容。我不希望屏幕滚动,因为使用Console.Write或Console.Writeline方法将继续以增量方式在控制台屏幕上显示文本,从而开始滚动。

我希望将字符串写在同一位置。我怎么能这样做?

由于

2 个答案:

答案 0 :(得分:50)

使用Console.SetCursorPosition设置位置。如果您需要先确定,请使用Console.CursorLeftConsole.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) {
            }
        }
    }