2017-02-13 4 views
0

У меня есть статический метод, который я хочу использовать для изменения Console.BackgroundColor, если он работает под тестовой средой. Когда я разбиваю строку после изменения цвета, по-прежнему устанавливается значение «Черный».Цвет консоли Цвет фона Не меняющийся

public static void LogError(string err) 
{ 
    if (IsRunningFromMspec) 
    { 
     Console.BackgroundColor = ConsoleColor.DarkRed; 
     Console.WriteLine(" &&&" + err); 
    } 
    else if (MyTracer.MyLevelSwitch.TraceError && !string.IsNullOrEmpty(err)) 
    { 
     Trace.TraceError(" &&& - " + err); 
    } 
} 

ответ

4

Console.BackgroundColor не меняет цвет фона всего окна консоли. Он меняет только цвет фона текста, который вы напишете после вы установили этот цвет.

Таким образом, ваш выход Console.WriteLine(" &&&" + err); теперь будет написано с DarkRed фоном:

enter image description here

Unfortunatly Я не знаю, как программно изменить весь цвет окна консоли на данный момент.

Как Ян Х. отметил в комментариях, чтобы установить фон на целом консольном окне до нужного цвета вызова

Console.Clear(); 

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

+0

Чтобы покрасить весь фон, выполните 'Console.Clear();' после установки цвета фона. –

+0

@IanH. ах, хорошо, хорошо, забыл об этом (я думаю, что помню, я знал это однажды). Thx, я добавлю его для полноты. –

+0

API-интерфейсы Windows для вызова являются ['GetConsoleScreenBufferInfo'] (https://msdn.microsoft.com/en-us/library/ms683171), чтобы получить текущий' srWindow', для начальной координаты и количества ячеек символов для чтения через ['ReadConsoleOutputAttribute'] (https://msdn.microsoft.com/en-us/library/ms684968). Измените цвет фона для каждой ячейки и запишите данные атрибута через ['WriteConsoleOutputAttribute'] (https://msdn.microsoft.com/en-us/library/ms687407). – eryksun

 Смежные вопросы

  • Нет связанных вопросов^_^