Freigeben über


Vorgehensweise: Festlegen von Tabstopps im grafisch dargestellten Text

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

Hinweis

Das System.Windows.Forms.TextRenderer unterstützt das Hinzufügen von Tabstopps zu gezeichnetem Text nicht, obwohl Sie vorhandene Tabstopps mit dem TextFormatFlags.ExpandTabs Flagge erweitern können.

Beispiel

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

Die folgende Abbildung zeigt den Text im Registerkartenformat:

Screenshot einer Registerkartenliste mit Namen und Punktzahlen.

Der folgende Code übergibt zwei Argumente an die SetTabStops Methode. Das zweite Argument ist ein Array, das Tabstoppversatze enthält. Das erste Argument, das an SetTabStops übergeben wird, ist 0, was darauf hinweist, dass der erste Offset im Array von Position 0, dem linken Rand des Begrenzungsrechtecks, 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)

Code kompilieren

Siehe auch