.NET 控制台 TextWriter 可以理解 Indent/Unndent/IndentLevel

时间:2023-03-26
本文介绍了.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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

上一篇:C#:重定向控制台应用程序输出:如何刷新输出? 下一篇:如何修改上一行控制台文本?

相关文章