Câu trả lời:
Đúng. Xem bài viết này . Đây là một ví dụ từ đó:
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();
}
}
Lấy từ đây .
Nhận xét trên là cả hai phản hồi chắc chắn, tuy nhiên lưu ý rằng chúng không phải là chủ đề an toàn. Nếu bạn đang ghi vào bảng điều khiển với nhiều luồng, việc thay đổi màu sẽ thêm một điều kiện cuộc đua có thể tạo ra một số kết quả trông lạ. Nó là đơn giản để sửa chữa mặc dù:
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
cuộc gọi sẽ không bị cắt xén. Xem stackoverflow.com/questions/4812508/ Lần . Đó chỉ là thứ tự của các cuộc gọi viết không "an toàn".
Tôi đã tạo một plugin nhỏ (có sẵn trên NuGet ) cho phép bạn thêm bất kỳ màu nào (nếu được thiết bị đầu cuối hỗ trợ) vào đầu ra giao diện điều khiển của bạn, mà không có giới hạn của các giải pháp cổ điển.
Nó hoạt động bằng cách mở rộng String
đối tượng và cú pháp rất đơn giản:
"colorize me".Pastel("#1E90FF");
Cả hai màu nền trước và sau đều được hỗ trợ.
Vâng, nó dễ dàng và rõ ràng. Xác định màu mặc định đầu tiên.
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.White;
Console.Clear();
Console.Clear()
nó quan trọng để thiết lập màu giao diện điều khiển mới. Nếu bạn không thực hiện bước này, bạn có thể thấy các màu kết hợp khi yêu cầu giá trị với Console.ReadLine()
.
Sau đó, bạn có thể thay đổi màu sắc trên mỗi bản in:
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Red text over black.");
Khi kết thúc chương trình của bạn, hãy nhớ đặt lại màu bảng điều khiển khi kết thúc:
Console.ResetColor();
Console.Clear();
Bây giờ với netcore, chúng tôi có một vấn đề khác nếu bạn muốn "bảo tồn" trải nghiệm Người dùng vì thiết bị đầu cuối có màu khác nhau trên mỗi Hệ điều hành.
Tôi đang tạo một thư viện giải quyết vấn đề này với Định dạng văn bản: màu sắc, căn chỉnh và nhiều hơn nữa. Hãy sử dụng và đóng góp.
https://github.com/deinsoftware/colorify/ và cũng có sẵn dưới dạng gói NuGet
Chỉ cần thêm vào các câu trả lời ở trên mà tất cả đều sử dụng Console.WriteLine
: để thay đổi màu trên cùng một dòng văn bản, hãy viết ví dụ:
Console.Write("This test ");
Console.BackgroundColor = bTestSuccess ? ConsoleColor.DarkGreen : ConsoleColor.Red;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine((bTestSuccess ? "PASSED" : "FAILED"));
Console.ResetColor();
Có nó là có thể như sau. Những màu này có thể được sử dụng trong ứng dụng bảng điều khiển để xem một số lỗi về màu đỏ, v.v ...
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
Đây là một phương pháp đơn giản mà tôi đã viết để viết thông điệp bảng điều khiển với sự thay đổi màu nội tuyến. Nó chỉ hỗ trợ một màu, nhưng nó phù hợp với nhu cầu của tôi.
// 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();
}