Answers:
是。看到这篇文章。这里是一个例子:
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("White on blue.");
class Program
{
static void Main()
{
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("White on blue.");
Console.WriteLine("Another line.");
Console.ResetColor();
}
}
取自这里。
以上评论都是可靠的回答,但是请注意,它们不是线程安全的。如果您正在使用多个线程向控制台写入数据,则更改颜色会添加一个竞争条件,该竞争条件会创建一些看起来很奇怪的输出。修复起来很简单:
public class ConsoleWriter
{
private static object _MessageLock= new object();
public void WriteMessage(string message)
{
lock (_MessageLock)
{
Console.BackgroundColor = ConsoleColor.Red;
Console.WriteLine(message);
Console.ResetColor();
}
}
}
Write
电话不会乱码。请参阅stackoverflow.com/questions/4812508/…。这只是写调用的顺序,并非“安全”。
是的,这既简单又可行。定义第一个默认颜色。
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.White;
Console.Clear();
Console.Clear()
为了设置新的控制台颜色,这一点很重要。如果不执行此步骤,则使用询问值时会看到组合的颜色Console.ReadLine()
。
然后,您可以更改每个打印件的颜色:
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Red text over black.");
完成程序后,请记住在完成后重设控制台颜色:
Console.ResetColor();
Console.Clear();
现在,使用netcore时,如果您要“保留”用户体验,则会遇到另一个问题,因为终端在每个操作系统上都有不同的颜色。
我正在制作一个使用文本格式解决此问题的库:颜色,对齐方式等等。随时使用和贡献。
是的,可能如下。这些颜色可以在控制台应用程序中使用,以查看一些红色等错误。
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.White;//after this line every text will be white on blue background
Console.WriteLine("White on blue.");
Console.WriteLine("Another line.");
Console.ResetColor();//reset to the defoult colour
这是我编写的一种简单方法,用于编写带有内联颜色更改的控制台消息。它仅支持一种颜色,但符合我的需求。
// usage: WriteColor("This is my [message] with inline [color] changes.", ConsoleColor.Yellow);
static void WriteColor(string message, ConsoleColor color)
{
var pieces = Regex.Split(message, @"(\[[^\]]*\])");
for(int i=0;i<pieces.Length;i++)
{
string piece = pieces[i];
if (piece.StartsWith("[") && piece.EndsWith("]"))
{
Console.ForegroundColor = color;
piece = piece.Substring(1,piece.Length-2);
}
Console.Write(piece);
Console.ResetColor();
}
Console.WriteLine();
}