Putting colour/color to work on the console
http://www.codeproject.com/csharp/Console_Apps__Colour_Text.php

解决方案 »

  1.   

    我来帮班门兄贴过来先是consolecolour.cs类,用来调用颜色
    // ConsoleColour.cs
    using System;// need this to make API calls
    using System.Runtime.InteropServices;namespace PFitzsimons.ConsoleColour
    {
        /// <summary>
        /// Static class for console colour manipulation.
        /// </summary>
        public class ConsoleColour
        {
            // constants for console streams
            const int STD_INPUT_HANDLE = -10;
            const int STD_OUTPUT_HANDLE = -11;
            const int STD_ERROR_HANDLE = -12;        [DllImportAttribute("Kernel32.dll")]
            private static extern IntPtr GetStdHandle
            (
                int nStdHandle // input, output, or error device
            );        [DllImportAttribute("Kernel32.dll")]
            private static extern bool SetConsoleTextAttribute
            (
                IntPtr hConsoleOutput, // handle to screen buffer
                int wAttributes    // text and background colors
            );        // colours that can be set
            [Flags]
            public enum ForeGroundColour
            {
                Black = 0x0000,
                Blue = 0x0001,
                Green = 0x0002, 
                Cyan = 0x0003,
                Red = 0x0004,
                Magenta = 0x0005,
                Yellow = 0x0006,
                Grey = 0x0007,
                White = 0x0008
            }        // class can not be created, so we can set colours 
            // without a variable
            private ConsoleColour()
            {
            }        public static bool SetForeGroundColour()
            {
                // default to a white-grey
                return SetForeGroundColour(ForeGroundColour.Grey);
            }        public static bool SetForeGroundColour(
                ForeGroundColour foreGroundColour)
            {
                // default to a bright white-grey
                return SetForeGroundColour(foreGroundColour, true);
            }        public static bool SetForeGroundColour(
                ForeGroundColour foreGroundColour, 
                bool brightColours)
            {
                // get the current console handle
                IntPtr nConsole = GetStdHandle(STD_OUTPUT_HANDLE);
                int colourMap;
                
                // if we want bright colours OR it with white
                if (brightColours)
                    colourMap = (int) foreGroundColour | 
                        (int) ForeGroundColour.White;
                else
                    colourMap = (int) foreGroundColour;            // call the api and return the result
                return SetConsoleTextAttribute(nConsole, colourMap);
            }
        }
    }然后是主程序
    // Console.cs
    using System;// we want color output
    using PFitzsimons.ConsoleColour;namespace MyApp
    {
        public class MyApp
        {
            public static void Main()
            {
                ConsoleColour.SetForeGroundColour(
                    ConsoleColour.ForeGroundColour.Green);            Console.WriteLine("Text in green");            ConsoleColour.SetForeGroundColour(
                    ConsoleColour.ForeGroundColour.Red);            Console.WriteLine("Text in red");            // reset console back to a default
                ConsoleColour.SetForeGroundColour();
            }
        }
    }
    分别存成ConsoleColour.cs和Console.cs,然后提示符下编译CSC ConsoleColour.cs Console.cs,生成console.exe可执行文件。执行之。