当前位置:  开发笔记 > 编程语言 > 正文

c#console,Console.Clear问题

如何解决《c#console,Console.Clear问题》经验,为你挑选了2个好方法。

我正在用C#编写一个控制台程序.

有没有办法可以使用Console.Clear()来清除控制台屏幕上的某些内容?

这是我的问题:

我有一个徽标(我把它放在屏幕上使用Console.WriteLine())和一个二维数组,我想保持不变并清除它下面的所有内容.



1> Diadistis..:

您可以使用自定义方法清除部分屏幕...

static void Clear(int x, int y, int width, int height)
{
    int curTop = Console.CursorTop;
    int curLeft = Console.CursorLeft;
    for (; height > 0;)
    {
        Console.SetCursorPosition(x, y + --height);
        Console.Write(new string(' ',width));
    }
    Console.SetCursorPosition(curLeft, curTop);
}



2> xan..:

编辑:这里的答案显示了如何操控控制台比我意识到的更强大.我最初写的内容仍然适用,如果你没有这些设施,也许用不同的语言可能会有用.


存储徽标和最初生成的数组状态,然后在清除控制台时再次写出保存的值,而不是使用相同的生成过程.

正如其他人所说,控制台不是为这种操作而设计的,所以你必须解决它.

另一种选择可能是直接写入字符串或字符串构建器而不是控制台,然后每当控制台需要更新时,清除它的输出并将"输出"字符串/流写入控制台.这将允许您在输出文本上执行字符串操作/正则表达式等以删除/保留特定的东西.

但是,这将涉及大量的控制台开销,因为您最终会在每次更新时重新打印整个输出.

这个解决方案可能是保持你写入控制台的并行字符串/流表示,然后当你需要清除时可以清除字符串表示,清除控制台,然后再将字符串写入控制台.这样你只需要在通常的写入中添加一个额外的写入操作,并且只有在清除控制台时才会发生主要的额外工作.

无论你做什么,写入控制台永远不会是一个快速操作,如果你正在做很多操作,把东西写入控制台,它可能会严重拖累你的应用程序的性能.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有