C# 控制台,控制台,问题解决了
我正在用C#编写一个控制台程序 有没有一种方法可以使用Console.Clear()只清除控制台屏幕上的某些内容 这是我的问题:C# 控制台,控制台,问题解决了,c#,console-application,C#,Console Application,我正在用C#编写一个控制台程序 有没有一种方法可以使用Console.Clear()只清除控制台屏幕上的某些内容 这是我的问题: 我有一个徽标(我使用Console.WriteLine()将其放在屏幕上)和一个2d数组,我希望它保持不变并清除它下面的所有内容 您能否先清除然后重新写入徽标和阵列?控制台的设计并非如您所述。编辑:答案显示了您可以如何比我所知道的更有力地操作控制台。我最初写的东西仍然适用,如果您没有这些可用的工具,也许可以使用另一种语言,可能会很有用 存储徽标和最初生成的阵列状态,
我有一个徽标(我使用Console.WriteLine()将其放在屏幕上)和一个2d数组,我希望它保持不变并清除它下面的所有内容 您能否先清除然后重新写入徽标和阵列?控制台的设计并非如您所述。编辑:答案显示了您可以如何比我所知道的更有力地操作控制台。我最初写的东西仍然适用,如果您没有这些可用的工具,也许可以使用另一种语言,可能会很有用
存储徽标和最初生成的阵列状态,然后在清除控制台时再次写出保存的值,而不是使用相同的生成过程 正如其他人所说,控制台不是为这种操作而设计的,因此您必须解决它 另一个选项可能是写入字符串或字符串生成器,而不是直接写入控制台,然后每当控制台需要更新时,清除其输出并将“输出”字符串/流写入控制台。这将允许您对输出文本执行字符串操作/正则表达式等,以删除/保留特定内容 但是,这将涉及大量控制台开销,因为每次更新都会重新打印整个输出 解决方案可能是保留写入控制台的内容的并行字符串/流表示,然后当需要清除时,可以清除字符串表示,清除控制台,然后再次将字符串写入控制台。这样,您将只在通常的写入操作中添加一个额外的写入操作,并且只有当您清除控制台时,才会发生主要的额外工作
无论您做什么,写入控制台从来都不是一个快速的操作,如果您正在执行大量将内容写入控制台的操作,这可能会严重拖累应用程序的性能。您可以使用自定义方法清除部分屏幕
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);
}
这很有趣。我必须检查一下。所以如果我使用Console.setWindowsSize(宽度、高度);,宽度为60,高度为40。我该如何清理屏幕的下半部分?酷!由于您处理的是半个屏幕,因此避免使用控制台。清除命令。你仍然在重写屏幕的一半。效果很好,保留了我想要的。但是,清除的菜单会重新出现在清除的空间下方。我需要它在清除的空间中刷新。有什么建议我可以修改上面的Clear方法来解决这个问题吗?在Clear方法之后调用Console.SetCursorPosition来将光标精确地放在需要写入的位置如何?i、 e:清晰(0,20,60,20);控制台。设置光标位置(0,20);