2017-06-15 139 views
1

我目前正在尝试创建一个程序来输出某些数据集。数据看起来像这样:交替控制台背景颜色 - C#

Offer 1:   Economy  $203.20   Jetblue Airways 
    Option 1 
    Departure: 2017-12-25 - 20:29:00.000    From: JFK    Arrival: 2017-12-25 - 23:06:00.000    At: JAX 
    Departure: 2017-12-26 - 07:00:00.000    From: JAX    Arrival: 2017-12-26 - 08:16:00.000    At: FLL 
    Departure: 2017-12-26 - 09:14:00.000    From: FLL    Arrival: 2017-12-26 - 11:14:00.000    At: PAP 
    Total projected travel time: 14 Hours, 45 Minutes 

    Option 2 
    Departure: 2017-12-25 - 16:41:00.000    From: JFK    Arrival: 2017-12-25 - 19:14:00.000    At: JAX 
    Departure: 2017-12-26 - 07:00:00.000    From: JAX    Arrival: 2017-12-26 - 08:16:00.000    At: FLL 
    Departure: 2017-12-26 - 09:14:00.000    From: FLL    Arrival: 2017-12-26 - 11:14:00.000    At: PAP 
    Total projected travel time: 18 Hours, 33 Minutes 

    Offer 2:   Economy  $216.60   Jetblue Airways 
    Option 1 
    Departure: 2017-12-25 - 05:45:00.000    From: EWR    Arrival: 2017-12-25 - 08:28:00.000    At: MCO 
    Departure: 2017-12-25 - 09:55:00.000    From: MCO    Arrival: 2017-12-25 - 12:07:00.000    At: PAP 
    Total projected travel time: 6 Hours, 22 Minutes 

    Option 2 
    Departure: 2017-12-25 - 20:30:00.000    From: EWR    Arrival: 2017-12-25 - 23:13:00.000    At: MCO 
    Departure: 2017-12-26 - 09:55:00.000    From: MCO    Arrival: 2017-12-26 - 12:07:00.000    At: PAP 
    Total projected travel time: 15 Hours, 37 Minutes 

    Offer 3:   Economy  $218.60   Jetblue Airways 
    Option 1 
    Departure: 2017-12-25 - 06:00:00.000    From: JFK    Arrival: 2017-12-25 - 08:48:00.000    At: MCO 
    Departure: 2017-12-25 - 09:55:00.000    From: MCO    Arrival: 2017-12-25 - 12:07:00.000    At: PAP 
    Total projected travel time: 6 Hours, 7 Minutes 

    Option 2 
    Departure: 2017-12-25 - 21:45:00.000    From: JFK    Arrival: 2017-12-26 - 00:34:00.000    At: MCO 
    Departure: 2017-12-26 - 09:55:00.000    From: MCO    Arrival: 2017-12-26 - 12:07:00.000    At: PAP 
    Total projected travel time: 14 Hours, 22 Minutes 

可以有多达50个优惠,所以你可以想象得到的输出可能会相当长。我想知道是否有任何可能的方式来编程地设置背景颜色的格式,以便每个选项在两个颜色块之间交替返回和第四。例如,如果选项1的背景为灰色,则选项2将具有黑色背景,选项3灰色,选项4黑色等......我不关心提供文字包围的颜色,只要它是与之前的色块相反。我试着用Console.BackgroundColor设置背景颜色,但它只突出显示文本,使控制台不管原来的颜色。我发现你可以通过使用Console.BackgroundColor(),然后Console.Clear将整个控制台设置为一种颜色,但是这会在我的情况下删除数据。我想我所要问的是,如果有可能在控制台中获得条纹背景。

提前致谢!

+0

这条消息怎么打印?您可能需要在没有任何字符的地方填充背景颜色,但这只是一种猜测。 – CodeCaster

+0

这只是基本的Console.WriteLine()输出。我不想猜测需要填写所有内容的标签数量。但如果这是我唯一的选择,我可能会去做。 –

+0

我的意思是请创建一个[mcve]并包含您所看到的屏幕截图,然后编辑一个以显示您想要查看的内容。 – CodeCaster

回答

1

背景色仅适用于实际打印值的列。您可以通过空间填充整行来打印到每一列:

var width = Console.WindowWidth; 
Console.BackgroundColor = System.ConsoleColor.DarkRed; 
Console.WriteLine("{0, -" + width + "}", "TestRed"); 

这将使用深红色背景色打印整行。

+0

是的!谢谢。这就是我一直在寻找。 –

1

使用Console.BackgroundColor并将其设置为enum System.ConsoleColor中的任何值。你将不得不在每一行上改变你想要做的事情。不要使用.Clear,只需将其更改为您需要的不同块。

了解更多here

编辑:

这是一个代码示例。

using System; 
using System.Collections.Generic; 
using System.Linq; 

namespace ConsoleApp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      List<ConsoleColor> colors = Enum.GetValues(typeof(ConsoleColor)).Cast<ConsoleColor>().ToList(); 
      foreach (var back in colors) 
      { 
       Console.BackgroundColor = back; 
       foreach (var fore in colors) 
       { 
        Console.ForegroundColor = fore; 
        Console.Write("Test  "); 
       } 
      } 
      Console.ReadLine(); 
     } 
    } 
} 
+0

但是这只是让我面对同样的问题。它只是在不改变背景颜色的情况下突出显示文字。你能举个例子说明你的意思吗?也许我很困惑。 –

+0

我已经添加了一个代码示例。如果你不能做到这一点... :( –

+0

再次,它不能解决我的问题,但非常感谢您给它一个镜头! –