Freigeben über


Vorgehensweise: Festlegen von Tabstopps in gezeichnetem Text

Sie können Tabstopps für Text festlegen, indem Sie die SetTabStops-Methode eines StringFormat-Objekts aufrufen und dieses StringFormat-Objekt dann an die DrawString-Methode der Graphics-Klasse übergeben.

Hinweis

System.Windows.Forms.TextRenderer unterstützt nicht das Hinzufügen von Tabstopps zum Zeichnen von Text, obwohl Sie vorhandene Tabstopps mithilfe des TextFormatFlags.ExpandTabs-Flags erweitern können.

Beispiel

Im folgenden Beispiel werden Tabstopps auf 150, 250 und 350 festgelegt. Anschließend zeigt der Code eine Liste im Registerkartenformat mit Namen und Testergebnissen an.

In der folgenden Abbildung wird dieser Text im Registerkartenformat veranschaulicht:

Screenshot: Liste im Registerkartenformat mit Namen und Ergebnissen

Der folgende Code übergibt zwei Argumente an die SetTabStops-Methode. Das zweite Argument ist ein Array, das Taboffsets enthält. Das erste an SetTabStops übergebene Argument ist 0 (null), das angibt, dass das erste Offset im Array ab der Position 0 (der linke Rand des umgebenen Rechtecks) gemessen wird.

string text = "Name\tTest 1\tTest 2\tTest 3\n";
text = text + "Joe\t95\t88\t91\n";
text = text + "Mary\t98\t84\t90\n";
text = text + "Sam\t42\t76\t98\n";
text = text + "Jane\t65\t73\t92\n";

FontFamily fontFamily = new FontFamily("Courier New");
Font font = new Font(
   fontFamily,
   12,
   FontStyle.Regular,
   GraphicsUnit.Point);
Rectangle rect = new Rectangle(10, 10, 450, 100);
StringFormat stringFormat = new StringFormat();
SolidBrush solidBrush = new SolidBrush(Color.FromArgb(255, 0, 0, 255));
float[] tabs = { 150, 100, 100, 100 };

stringFormat.SetTabStops(0, tabs);

e.Graphics.DrawString(text, font, solidBrush, rect, stringFormat);

Pen pen = Pens.Black;
e.Graphics.DrawRectangle(pen, rect);
Dim myText As String = _
   "Name" & ControlChars.Tab & _
   "Test 1" & ControlChars.Tab & _
   "Test 2" & ControlChars.Tab & _
   "Test 3" & ControlChars.Cr

myText = myText & "Joe" & ControlChars.Tab & _
                  "95" & ControlChars.Tab & _
                  "88" & ControlChars.Tab & _
                  "91" & ControlChars.Cr
myText = myText & "Mary" & ControlChars.Tab & _
                  "98" & ControlChars.Tab & _
                  "84" & ControlChars.Tab & _
                  "90" & ControlChars.Cr
myText = myText & "Sam" & ControlChars.Tab & _
                  "42" & ControlChars.Tab & _
                  "76" & ControlChars.Tab & _
                  "98" & ControlChars.Cr
myText = myText & "Jane" & ControlChars.Tab & _
                  "65" & ControlChars.Tab & _
                  "73" & ControlChars.Tab & _
                  "92" & ControlChars.Cr

Dim fontFamily As New FontFamily("Courier New")
Dim font As New Font( _
   fontFamily, _
   12, _
   FontStyle.Regular, _
   GraphicsUnit.Point)
Dim rect As New Rectangle(10, 10, 450, 100)
Dim stringFormat As New StringFormat()
Dim solidBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 255))
Dim tabs As Single() = {150, 100, 100, 100}

stringFormat.SetTabStops(0, tabs)

e.Graphics.DrawString(myText, font, solidBrush, RectangleF.op_implicit(rect), stringFormat)

Dim pen As Pen = Pens.Black
e.Graphics.DrawRectangle(pen, rect)

Kompilieren des Codes

Siehe auch