Используя раскрашивает консоль, как сохранить в упрощенной нотации

Код ниже отображает строку различными цветами.
Но это - много кода, чтобы ввести только для одной строки и повторить это на всем протяжении программы снова.
Как точно я могу упростить это, таким образом, я не должен писать тот же объем кода много раз?

        Console.ForegroundColor = ConsoleColor.Cyan;
        Console.Write(">>> Order: ");
        Console.ResetColor();
        Console.Write("Data");
        Console.ForegroundColor = ConsoleColor.DarkGreen;
        Console.Write("Parity");
        Console.ForegroundColor = ConsoleColor.Cyan;
        Console.Write(" <<<");

Есть ли любой способ сохранить... = Консоль. ForegroundColor = ConsoleColor. Голубой;?

"текст" + цвет? + "текст"; и т.д...

Любой вход ценил отношения.

5
задан Athari 1 March 2018 в 21:16
поделиться

3 ответа

Это не совсем понятно, что вы имеете в виду, но вы всегда можете создать вспомогательные методы:

public static void ColoredConsoleWrite(ConsoleColor color, string text)
{
    ConsoleColor originalColor = Console.ForegroundColor;
    Console.ForegroundColor = color;
    Console.Write(text);
    Console.ForegroundColor = originalColor;
}
19
ответ дан 18 December 2019 в 05:21
поделиться

Другая идея состоит в том, чтобы встроить что-то вроде escape-кодов ANSI , но они довольно обширны, а цвет - лишь небольшая их часть.

Поэтому я бы рекомендовал встраивать цветовые коды в выходные строки, используя раздел области частного использования Unicode (PUA) в базовой многоязычной плоскости (BMP) и базовый синтаксический анализатор / средство визуализации.

Кстати, настройки цвета консоли являются глобальными для процесса, поэтому, если несколько потоков генерируют цветной вывод, каждый блок должен быть окружен критической секцией, чтобы избежать «смешения цветов».

Поскольку вставлять в строку немного долго, я загрузил образец исходного кода на свой сайт.

6
ответ дан 18 December 2019 в 05:21
поделиться

Вот мой вклад, хотя и в Visual Basic:

Sub WriteColor(ByRef part1 As String, ByRef part2 As String)
    Console.Write(part1)
    Console.ForegroundColor = ConsoleColor.Green
    Console.WriteLine(part2)
    Console.ResetColor()
End Sub

Я называю приведенный выше код следующим образом:

WriteColor("DEBUGMODE INFO: SQL query statement result = ", result.ToString)

Зеленый цвет позволяет мне выбрать результат запроса во всех остальных отладках сообщения, которые я распечатываю. Надеюсь это поможет. Очевидно, было бы более полезным более общее решение, возможно, такое, которое допускает переменное количество аргументов, но даже этот конкретный код помогает мне избежать повторения и облегчает жизнь.

0
ответ дан 18 December 2019 в 05:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: