IndentedTextWriter Класс

Определение

Предоставляет модуль записи текста, позволяющий делать отступ новой строки с помощью строкового маркера табуляции.

public ref class IndentedTextWriter : System::IO::TextWriter
public class IndentedTextWriter : System.IO.TextWriter
type IndentedTextWriter = class
    inherit TextWriter
Public Class IndentedTextWriter
Inherits TextWriter
Наследование
IndentedTextWriter

Примеры

В следующем примере кода показано использование IndentedTextWriter для записи текста на разных уровнях отступа.

#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>
#using <System.dll>

using namespace System;
using namespace System::CodeDom;
using namespace System::CodeDom::Compiler;
using namespace System::ComponentModel;
using namespace System::IO;
using namespace System::Windows::Forms;
public ref class Form1: public System::Windows::Forms::Form
{
private:
   System::Windows::Forms::TextBox^ textBox1;

   String^ CreateMultilevelIndentString()
   {
      
      // Creates a TextWriter to use as the base output writer.
      System::IO::StringWriter^ baseTextWriter = gcnew System::IO::StringWriter;
      
      // Create an IndentedTextWriter and set the tab string to use 
      // as the indentation string for each indentation level.
      System::CodeDom::Compiler::IndentedTextWriter^ indentWriter = gcnew IndentedTextWriter( baseTextWriter,"    " );
      
      // Sets the indentation level.
      indentWriter->Indent = 0;
      
      // Output test strings at stepped indentations through a recursive loop method.
      WriteLevel( indentWriter, 0, 5 );
      
      // Return the resulting string from the base StringWriter.
      return baseTextWriter->ToString();
   }


   void WriteLevel( IndentedTextWriter^ indentWriter, int level, int totalLevels )
   {
      
      // Output a test string with a new-line character at the end.
      indentWriter->WriteLine( "This is a test phrase. Current indentation level: {0}", level );
      
      // If not yet at the highest recursion level, call this output method for the next level of indentation.
      if ( level < totalLevels )
      {
         
         // Increase the indentation count for the next level of indented output.
         indentWriter->Indent++;
         
         // Call the WriteLevel method to write test output for the next level of indentation.
         WriteLevel( indentWriter, level + 1, totalLevels );
         
         // Restores the indentation count for this level after the recursive branch method has returned.
         indentWriter->Indent--;
      }
      else
      // Outputs a string using the WriteLineNoTabs method.
            indentWriter->WriteLineNoTabs( "This is a test phrase written with the IndentTextWriter.WriteLineNoTabs method." );
      // Outputs a test string with a new-line character at the end.
      indentWriter->WriteLine( "This is a test phrase. Current indentation level: {0}", level );
   }


   void button1_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      textBox1->Text = CreateMultilevelIndentString();
   }


public:
   Form1()
   {
      System::Windows::Forms::Button^ button1 = gcnew System::Windows::Forms::Button;
      this->textBox1 = gcnew System::Windows::Forms::TextBox;
      this->SuspendLayout();
      this->textBox1->Anchor = (System::Windows::Forms::AnchorStyles)(System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Left | System::Windows::Forms::AnchorStyles::Right);
      this->textBox1->Location = System::Drawing::Point( 8, 40 );
      this->textBox1->Multiline = true;
      this->textBox1->Name = "textBox1";
      this->textBox1->Size = System::Drawing::Size( 391, 242 );
      this->textBox1->TabIndex = 0;
      this->textBox1->Text = "";
      button1->Location = System::Drawing::Point( 11, 8 );
      button1->Name = "button1";
      button1->Size = System::Drawing::Size( 229, 23 );
      button1->TabIndex = 1;
      button1->Text = "Generate string using IndentedTextWriter";
      button1->Click += gcnew System::EventHandler( this, &Form1::button1_Click );
      this->AutoScaleBaseSize = System::Drawing::Size( 5, 13 );
      this->ClientSize = System::Drawing::Size( 407, 287 );
      this->Controls->Add( button1 );
      this->Controls->Add( this->textBox1 );
      this->Name = "Form1";
      this->Text = "IndentedTextWriter example";
      this->ResumeLayout( false );
   }

};


[STAThread]
int main()
{
   Application::Run( gcnew Form1 );
}
using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.IO;
using System.Windows.Forms;

namespace IndentedTextWriterExample
{
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.TextBox textBox1;

        private string CreateMultilevelIndentString()
        {
            // Creates a TextWriter to use as the base output writer.
            System.IO.StringWriter baseTextWriter = new System.IO.StringWriter();

            // Create an IndentedTextWriter and set the tab string to use
            // as the indentation string for each indentation level.
            System.CodeDom.Compiler.IndentedTextWriter indentWriter = new IndentedTextWriter(baseTextWriter, "    ");

            // Sets the indentation level.
            indentWriter.Indent = 0;

            // Output test strings at stepped indentations through a recursive loop method.
            WriteLevel(indentWriter, 0, 5);

            // Return the resulting string from the base StringWriter.
            return baseTextWriter.ToString();
        }

        private void WriteLevel(IndentedTextWriter indentWriter, int level, int totalLevels)
        {
            // Output a test string with a new-line character at the end.
            indentWriter.WriteLine("This is a test phrase. Current indentation level: "+level.ToString());

            // If not yet at the highest recursion level, call this output method for the next level of indentation.
            if( level < totalLevels )
            {
                // Increase the indentation count for the next level of indented output.
                indentWriter.Indent++;

                // Call the WriteLevel method to write test output for the next level of indentation.
                WriteLevel(indentWriter, level+1, totalLevels);

                // Restores the indentation count for this level after the recursive branch method has returned.
                indentWriter.Indent--;
            }
            else
            {
                // Outputs a string using the WriteLineNoTabs method.
                indentWriter.WriteLineNoTabs("This is a test phrase written with the IndentTextWriter.WriteLineNoTabs method.");
            }

            // Outputs a test string with a new-line character at the end.
            indentWriter.WriteLine("This is a test phrase. Current indentation level: "+level.ToString());
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            textBox1.Text = CreateMultilevelIndentString();
        }

        public Form1()
        {
            System.Windows.Forms.Button button1 = new System.Windows.Forms.Button();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.SuspendLayout();
            this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                | System.Windows.Forms.AnchorStyles.Left)
                | System.Windows.Forms.AnchorStyles.Right)));
            this.textBox1.Location = new System.Drawing.Point(8, 40);
            this.textBox1.Multiline = true;
            this.textBox1.Name = "textBox1";
            this.textBox1.Size = new System.Drawing.Size(391, 242);
            this.textBox1.TabIndex = 0;
            this.textBox1.Text = "";
            button1.Location = new System.Drawing.Point(11, 8);
            button1.Name = "button1";
            button1.Size = new System.Drawing.Size(229, 23);
            button1.TabIndex = 1;
            button1.Text = "Generate string using IndentedTextWriter";
            button1.Click += new System.EventHandler(this.button1_Click);
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(407, 287);
            this.Controls.Add(button1);
            this.Controls.Add(this.textBox1);
            this.Name = "Form1";
            this.Text = "IndentedTextWriter example";
            this.ResumeLayout(false);
        }

        [STAThread]
        static void Main()
        {
            Application.Run(new Form1());
        }
    }
}
Imports System.CodeDom
Imports System.CodeDom.Compiler
Imports System.ComponentModel
Imports System.IO
Imports System.Windows.Forms

Public Class Form1
   Inherits System.Windows.Forms.Form
   Private textBox1 As System.Windows.Forms.TextBox 
   
   Private Function CreateMultilevelIndentString() As String
        ' Create a TextWriter to use as the base output writer.
        Dim baseTextWriter As New System.IO.StringWriter
      
        ' Create an IndentedTextWriter and set the tab string to use 
        ' as the indentation string for each indentation level.
        Dim indentWriter = New IndentedTextWriter(baseTextWriter, "    ")

        ' Set the indentation level.
        indentWriter.Indent = 0

        ' Output test strings at stepped indentations through a recursive loop method.
        WriteLevel(indentWriter, 0, 5)
      
        ' Return the resulting string from the base StringWriter.
        Return baseTextWriter.ToString()
    End Function

    Private Sub WriteLevel(ByVal indentWriter As IndentedTextWriter, ByVal level As Integer, ByVal totalLevels As Integer)
        ' Outputs a test string with a new-line character at the end.
        indentWriter.WriteLine(("This is a test phrase. Current indentation level: " + level.ToString()))

        ' If not yet at the highest recursion level, call this output method for the next level of indentation.
        If level < totalLevels Then
            ' Increase the indentation count for the next level of indented output.
            indentWriter.Indent += 1

            ' Call the WriteLevel method to write test output for the next level of indentation.
            WriteLevel(indentWriter, level + 1, totalLevels)

            ' Restores the indentation count for this level after the recursive branch method has returned.
            indentWriter.Indent -= 1

        Else
            ' Output a string using the WriteLineNoTabs method.
            indentWriter.WriteLineNoTabs("This is a test phrase written with the IndentTextWriter.WriteLineNoTabs method.")
        End If

        ' Outputs a test string with a new-line character at the end.
        indentWriter.WriteLine(("This is a test phrase. Current indentation level: " + level.ToString()))
    End Sub

    Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        textBox1.Text = CreateMultilevelIndentString()
    End Sub

    Public Sub New()
        Dim button1 As New System.Windows.Forms.Button
        Me.textBox1 = New System.Windows.Forms.TextBox
        Me.SuspendLayout()
        Me.textBox1.Anchor = CType(System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right, System.Windows.Forms.AnchorStyles)
        Me.textBox1.Location = New System.Drawing.Point(8, 40)
        Me.textBox1.Multiline = True
        Me.textBox1.Name = "textBox1"
        Me.textBox1.Size = New System.Drawing.Size(391, 242)
        Me.textBox1.TabIndex = 0
        Me.textBox1.Text = ""
        button1.Location = New System.Drawing.Point(11, 8)
        button1.Name = "button1"
        button1.Size = New System.Drawing.Size(229, 23)
        button1.TabIndex = 1
        button1.Text = "Generate string using IndentedTextWriter"
        AddHandler button1.Click, AddressOf Me.button1_Click
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(407, 287)
        Me.Controls.Add(button1)
        Me.Controls.Add(Me.textBox1)
        Me.Name = "Form1"
        Me.Text = "IndentedTextWriter example"
        Me.ResumeLayout(False)
    End Sub

    <STAThread()> _
    Shared Sub Main()
        Application.Run(New Form1)
    End Sub
End Class

Комментарии

IndentedTextWriter расширяет , предоставляя TextWriter методы, которые вставляют строку табуляции и отслеживают текущий уровень отступа. Текст, отформатированный с несколькими уровнями отступов, полезен для созданного кода, поэтому этот класс используется в реализациях генератора кода CodeDOM.

Строка табуляции — это строка, из которую состоит каждый отступ. Обычно строка табуляции содержит пробелы.

Примечание

Этот класс содержит требования связывания и наследования на уровне класса, которые применяются ко всем элементам. Если непосредственно вызывающий оператор или производный класс не имеет разрешения полного доверия, возникает исключение SecurityException. Дополнительные сведения о требованиях к безопасности см. в разделе Требования ссылок и Требования наследования.

Конструкторы

IndentedTextWriter(TextWriter)

Инициализирует новый экземпляр класса IndentedTextWriter, используя указанный модуль записи текста и строку табуляции по умолчанию.

IndentedTextWriter(TextWriter, String)

Инициализирует новый экземпляр класса IndentedTextWriter, используя указанный модуль записи текста и строку табуляции.

Поля

CoreNewLine

Сохраняет символы новой строки, используемые для данного TextWriter.

(Унаследовано от TextWriter)
DefaultTabString

Указывает строку табуляции по умолчанию. Это поле является константой.

Свойства

Encoding

Получает кодировку для использования модулем записи текста.

FormatProvider

Возвращает объект, управляющий форматированием.

(Унаследовано от TextWriter)
Indent

Получает или задает количество пробелов для отступа.

InnerWriter

Получает TextWriter для использования.

NewLine

Получает или задает знак новой строки для использования.

Методы

Close()

Закрывает документ, в который производилась запись.

CreateObjRef(Type)

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

(Унаследовано от MarshalByRefObject)
Dispose()

Освобождает все ресурсы, используемые объектом TextWriter.

(Унаследовано от TextWriter)
Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом TextWriter, а при необходимости освобождает также управляемые ресурсы.

(Унаследовано от TextWriter)
DisposeAsync()

Выполняет определяемые приложением задачи, связанные с высвобождением или сбросом неуправляемых ресурсов асинхронно.

DisposeAsync()

Асинхронно освобождает все ресурсы, используемые объектом TextWriter.

(Унаследовано от TextWriter)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
Flush()

Сбрасывает поток.

FlushAsync()

Очищает все буферы для этого IndentedTextWriter асинхронно и вызывает запись всех буферизированных данных на базовое устройство.

FlushAsync()

Асинхронно очищает все буферы текущего средства записи и вызывает запись всех буферизованных данных в базовое устройство.

(Унаследовано от TextWriter)
FlushAsync(CancellationToken)

Очищает все буферы для этого IndentedTextWriter асинхронно и вызывает запись всех буферизированных данных на базовое устройство.

FlushAsync(CancellationToken)

Асинхронно очищает все буферы текущего средства записи и вызывает запись всех буферизованных данных в базовое устройство.

(Унаследовано от TextWriter)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetLifetimeService()
Устаревшие..

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.

(Унаследовано от MarshalByRefObject)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
InitializeLifetimeService()
Устаревшие..

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
MemberwiseClone(Boolean)

Создает неполную копию текущего объекта MarshalByRefObject.

(Унаследовано от MarshalByRefObject)
OutputTabs()

Выводит строку табуляции один раз для каждого уровня отступа в соответствии со свойством Indent.

OutputTabsAsync()

Асинхронно выводит вкладки в базовый TextWriter на основе текущего Indent.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
Write(Boolean)

Записывает текстовое представление логического значения в текстовый поток.

Write(Char)

Записывает символ в текстовый поток.

Write(Char[])

Записывает массив символов в текстовый поток.

Write(Char[], Int32, Int32)

Записывает подмассив символов в текстовый поток.

Write(Decimal)

Записывает текстовое представление десятичного значения в текстовый поток.

(Унаследовано от TextWriter)
Write(Double)

Записывает текстовое представление значения типа Double в текстовый поток.

Write(Int32)

Записывает текстовое представление целого числа в текстовый поток.

Write(Int64)

Записывает текстовое представление целого числа размером 8 байт в текстовый поток.

Write(Object)

Записывает текстовое представление объекта в текстовый поток.

Write(ReadOnlySpan<Char>)

Записывает диапазон символов в текстовый поток.

(Унаследовано от TextWriter)
Write(Single)

Записывает текстовое представление значения типа Single в текстовый поток.

Write(String)

Записывает указанную строку в текстовый поток.

Write(String, Object)

Выводит отформатированную строку, используя заданную семантику.

Write(String, Object, Object)

Выводит отформатированную строку, используя заданную семантику.

Write(String, Object, Object, Object)

Записывает форматированную строку в текстовый поток, используя ту же семантику, что и метод Format(String, Object, Object, Object).

(Унаследовано от TextWriter)
Write(String, Object[])

Выводит отформатированную строку, используя заданную семантику.

Write(StringBuilder)

Записывает построитель строки в текстовый поток.

(Унаследовано от TextWriter)
Write(UInt32)

Записывает в текстовый поток текстовое представление целого числа без знака размером 4 байта.

(Унаследовано от TextWriter)
Write(UInt64)

Записывает в текстовый поток текстовое представление целого числа без знака размером 8 байт.

(Унаследовано от TextWriter)
WriteAsync(Char)

Асинхронно записывает указанный Char объект в базовый TextWriterобъект , вставляя вкладки в начале каждой строки.

WriteAsync(Char)

Выполняет асинхронную запись символа в текстовый поток.

(Унаследовано от TextWriter)
WriteAsync(Char[])

Выполняет асинхронную запись массива символов в текстовый поток.

(Унаследовано от TextWriter)
WriteAsync(Char[], Int32, Int32)

Асинхронно записывает указанное число из указанного Charбуфера в базовый TextWriter, начиная с указанного индекса, и выводит вкладки в начале каждой новой строки.

WriteAsync(Char[], Int32, Int32)

Асинхронно записывает подмассив символов в текстовый поток.

(Унаследовано от TextWriter)
WriteAsync(ReadOnlyMemory<Char>, CancellationToken)

Асинхронно записывает указанные символы в базовый TextWriterобъект , вставляя вкладки в начале каждой строки.

WriteAsync(ReadOnlyMemory<Char>, CancellationToken)

Выполняет асинхронную запись области памяти символов в текстовый поток.

(Унаследовано от TextWriter)
WriteAsync(String)

Асинхронно записывает указанную строку в базовый TextWriterобъект , вставляя вкладки в начале каждой строки.

WriteAsync(String)

Выполняет асинхронную запись строки в текстовый поток.

(Унаследовано от TextWriter)
WriteAsync(StringBuilder, CancellationToken)

Асинхронно записывает содержимое указанного StringBuilder объекта в базовый TextWriterобъект , вставляя вкладки в начале каждой строки.

WriteAsync(StringBuilder, CancellationToken)

Асинхронно записывает построитель строки в текстовый поток.

(Унаследовано от TextWriter)
WriteLine()

Записывает признак конца строки.

WriteLine(Boolean)

Записывает текстовое представление логического значения, за которым следует признак конца строки, в текстовый поток.

WriteLine(Char)

Записывает в текстовый поток символ, за которым следует признак конца строки.

WriteLine(Char[])

Записывает в текстовый поток массив символов, за которым следует признак конца строки.

WriteLine(Char[], Int32, Int32)

Записывает в текстовый поток подмассив символов, за которым следует признак конца строки.

WriteLine(Decimal)

Записывает в текстовый поток текстовое представление десятичного значения, за которым следует знак конца строки.

(Унаследовано от TextWriter)
WriteLine(Double)

Записывает в текстовый поток текстовое представление значения типа Double, за которым следует признак конца строки.

WriteLine(Int32)

Записывает в текстовый поток текстовое представление целого числа, за которым следует признак конца строки.

WriteLine(Int64)

Записывает в текстовый поток текстовое представление целого числа размером 8 байт, за которым следует признак конца строки.

WriteLine(Object)

Записывает в текстовый поток текстовое представление объекта, за которым следует признак конца строки.

WriteLine(ReadOnlySpan<Char>)

Записывает в текстовый поток текстовое представление диапазона символов, за которым следует знак конца строки.

(Унаследовано от TextWriter)
WriteLine(Single)

Записывает в текстовый поток текстовое представление значения типа Single, за которым следует признак конца строки.

WriteLine(String)

Записывает в текстовый поток указанную строку, за которой следует признак конца строки.

WriteLine(String, Object)

Выводит отформатированную строку, за которой следует знак конца строки, используя заданную семантику.

WriteLine(String, Object, Object)

Выводит отформатированную строку, за которой следует знак конца строки, используя заданную семантику.

WriteLine(String, Object, Object, Object)

Записывает форматированную строку и перенос строки в текстовый поток, используя ту же семантику, что и Format(String, Object).

(Унаследовано от TextWriter)
WriteLine(String, Object[])

Выводит отформатированную строку, за которой следует знак конца строки, используя заданную семантику.

WriteLine(StringBuilder)

Записывает в текстовый поток текстовое представление построителя строки, за которым следует знак конца строки.

(Унаследовано от TextWriter)
WriteLine(UInt32)

Записывает в текстовый поток текстовое представление значения типа UInt32, за которым следует знак конца строки.

WriteLine(UInt64)

Записывает в текстовый поток текстовое представление целого числа без знака размером 8 байт, за которым следует признак конца строки.

(Унаследовано от TextWriter)
WriteLineAsync()

Асинхронно записывает признак конца строки в базовый TextWriterобъект .

WriteLineAsync()

Асинхронно записывает признак конца строки в текстовый поток.

(Унаследовано от TextWriter)
WriteLineAsync(Char)

Асинхронно записывает указанный Char объект в базовый TextWriter , за которым следует признак конца строки, вставляя вкладки в начале каждой строки.

WriteLineAsync(Char)

Асинхронно записывает в текстовый поток символ, за которым следует признак конца строки.

(Унаследовано от TextWriter)
WriteLineAsync(Char[])

Асинхронно записывает в текстовый поток массив символов, за которым следует признак конца строки.

(Унаследовано от TextWriter)
WriteLineAsync(Char[], Int32, Int32)

Асинхронно записывает указанное количество символов из указанного буфера, за которым следует признак конца строки, в базовый TextWriter, начиная с указанного индекса в буфере, вставляя табуляции в начале каждой строки.

WriteLineAsync(Char[], Int32, Int32)

Асинхронно записывает в текстовый поток подмассив символов, за которым следует признак конца строки.

(Унаследовано от TextWriter)
WriteLineAsync(ReadOnlyMemory<Char>, CancellationToken)

Асинхронно записывает указанные символы, за которым следует признак конца строки в базовый TextWriter, вставляя вкладки в начале каждой строки.

WriteLineAsync(ReadOnlyMemory<Char>, CancellationToken)

Асинхронно записывает в текстовый поток текстовое представление области памяти символов, за которым следует знак конца строки.

(Унаследовано от TextWriter)
WriteLineAsync(String)

Асинхронно записывает указанную строку, за которой следует признак конца строки, в базовый TextWriterобъект , вставляя вкладки в начале каждой строки.

WriteLineAsync(String)

Асинхронно записывает в текстовый поток строку, за которой следует признак конца строки.

(Унаследовано от TextWriter)
WriteLineAsync(StringBuilder, CancellationToken)

Асинхронно записывает содержимое указанного StringBuilder объекта с последующим признаком конца строки в базовый TextWriter, вставляя вкладки в начале каждой строки.

WriteLineAsync(StringBuilder, CancellationToken)

Асинхронно записывает в текстовый поток текстовое представление построителя строки, за которым следует знак конца строки.

(Унаследовано от TextWriter)
WriteLineNoTabs(String)

Записывает указанное строковое значение в строку без табуляций.

WriteLineNoTabsAsync(String)

Асинхронно записывает указанную строку в базовый TextWriter объект без вставки вкладок.

Явные реализации интерфейса

IDisposable.Dispose()

Описание этого члена см. в разделе Dispose().

(Унаследовано от TextWriter)

Методы расширения

ConfigureAwait(IAsyncDisposable, Boolean)

Настраивает способ выполнения ожиданий для задач, возвращаемых из асинхронного высвобождаемого объекта.

Применяется к