.NET Console TextWriter that Understands Indent/Unindent/IndentLevel

后端 未结 3 1714
清酒与你
清酒与你 2020-12-02 00:47

Does anybody have or know of a TextWriter for the Console that understand how to indent/unindent and has the ability to set the indent level.

3条回答
  •  时光说笑
    2020-12-02 01:26

    Try this:

    class MyConsole : TextWriter {
        TextWriter mOldConsole;
        bool mDoIndent;
    
        public MyConsole() {
            mOldConsole = Console.Out;
            Console.SetOut(this);
        }
    
        public int Indent { get; set; }
    
        public override void Write(char ch) {
            if (mDoIndent) {
                mDoIndent = false;
                for (int ix = 0; ix < Indent; ++ix) mOldConsole.Write("  ");
            }
            mOldConsole.Write(ch);
            if (ch == '\n') mDoIndent = true;
        }
    
        public override System.Text.Encoding Encoding {
            get { return mOldConsole.Encoding; }
        }
    }
    

    Sample usage:

    class Program {
        static MyConsole Output = new MyConsole();
        static void Main(string[] args) {
            Console.WriteLine("Hello");
            Output.Indent++;
            Console.WriteLine("world");
            Output.Indent--;
            Console.WriteLine("Back");
            Console.ReadLine();
        }
    }
    

提交回复
热议问题