通过提供字符串来更改控制台颜色

时间:2019-01-09 09:51:27

标签: c# colors console-application

我想基于颜色名称(如“ Red”或“ Blue”)将控制台的BackgroundColor更改为字符串。

这是一个粗糙的例子:

public void ChangeBackGroundColor(string ColorName)
{
    Console.BackgroundColor = ConsoleColor.ColorName;
    Console.Clear();
}

它应该更改控制台的BackgroundColor。

3 个答案:

答案 0 :(得分:1)

您需要将字符串ColorName转换为适当的枚举值:

Console.BackgroundColor = (ConsoleColor)Enum.Parse(typeof(ConsoleColor), ColorName, true);
Console.Clear();

答案 1 :(得分:0)

您需要将字符串解析为ConsoleColor枚举类型。如果Enum.Parse中未包含ColorName,则ConsoleColor将引发异常。因此,您可以使用TryParse来防止异常并单独处理。

public void ChangeBackGroundColor(string ColorName)
 {
     ConsoleColor consoleColor;

     if (Enum.TryParse(ColorName, out consoleColor))
     {
         // We now have an enum type.
         Console.BackgroundColor = consoleColor;
         Console.Clear();
     }

     //do whatever you want if it's invalid ColorName    
     Console.WriteLine("invalid color");
 }

答案 2 :(得分:0)

简单的变体,使用Enum.TryParse()跳过不存在的颜色:

private static void ChangeBackGroundColor(string ColorName)
{
    if (Enum.TryParse(ColorName, out ConsoleColor Color))
        Console.BackgroundColor = Color;
    Console.Clear();
}