1

我在 OS X 10.7.5 上的 Xamarin Studio 中处理 ac# 控制台应用程序时发现了一个奇怪的错误。如果我在循环的一次迭代中更改背景颜色,如果在此之前还有另一个循环,颜色有时会跳下。例如:

for (int i = 0; i < 18; i++) {
    Console.WriteLine (i);
}
for (int i = 0; i < 8; i++) {
    if (i == 5) {
        Console.BackgroundColor = ConsoleColor.Green;
        Console.WriteLine ("green");
        Console.ResetColor ();
    } else {
        Console.WriteLine (i);
    }
}

如果您运行该代码,绿色背景将跳下一行。但是,如果您将第一个循环更改为运行 17 次(或更少)而不是 18 次,则不会再发生这种情况。我猜这可能与终端窗口有关,您可能无法复制它,所以这是我得到的截图:http: //i.imgur.com/2WeaZ4k.png

有谁知道为什么会这样跳线以及如何防止它?谢谢!

4

1 回答 1

1

我遇到了类似的问题,一个刷新命令让它消失了。看看这段代码是否适合你。

    public static void WriteInColor(string format, ConsoleColor foreground, ConsoleColor background, params object[] args)
    {
        ConsoleColor prevForeground = Console.ForegroundColor;
        ConsoleColor prevBackground = Console.BackgroundColor;
        Console.ForegroundColor = foreground;
        Console.BackgroundColor = background;
        Console.Write(format, args);
        Console.ForegroundColor = prevForeground;
        Console.BackgroundColor = prevBackground;
        Console.Out.Flush();
    }
于 2014-05-12T00:26:11.177 回答