IndentedTextWriter Class
Provides a text writer that can indent new lines by a tab string token.
Assembly: System (in System.dll)
IndentedTextWriter extends a TextWriter by providing methods that insert a tab string and track the current indentation level. Text formatted with multiple indentation levels is useful for generated code, so this class is used by CodeDOM code generator implementations.
The tab string is the string that each indentation consists of. Typically the tab string contains white space.
Note: |
|---|
This class contains a link demand and an inheritance demand at the class level that applies to all members. A SecurityException is thrown when either the immediate caller or the derived class does not have full-trust permission. For details about security demands, see Link Demands and Inheritance Demands. |
The following code example demonstrates using an IndentedTextWriter to write text at different levels of indentation.
Imports System 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
- SecurityAction.LinkDemand
for full trust for the immediate caller. This class cannot be used by partially trusted code.
- SecurityAction.InheritanceDemand
for full trust for inheritors. This class cannot be inherited by partially trusted code.
System.MarshalByRefObject
System.IO.TextWriter
System.CodeDom.Compiler.IndentedTextWriter
Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Note: