.NET 控制台 TextWriter 可以理解 Indent/Unndent/IndentLevel [英] .NET Console TextWriter that Understands Indent/Unindent/IndentLevel

查看:14
本文介绍了.NET 控制台 TextWriter 可以理解 Indent/Unndent/IndentLevel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有人拥有或知道控制台的 TextWriter 了解如何缩进/取消缩进并能够设置缩进级别.

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.

推荐答案

试试这个:

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 == '
') mDoIndent = true;
    }

    public override System.Text.Encoding Encoding {
        get { return mOldConsole.Encoding; }
    }
}

示例用法:

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();
    }
}

这篇关于.NET 控制台 TextWriter 可以理解 Indent/Unndent/IndentLevel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆