Along with the properties discussed in the preceding section, the StringFormat class provides some methods. The GetTabStops and SetTabStops methods can be used to get and set tab stops, respectively. Each of these methods takes two arguments: firstTabOffset and tabStops. The first parameter, firstTabOffset, is a float value that represents the number of spaces between the beginning of a line of text and the first tab stop. The second parameter, tabstops, is an array of float values that represents the number of spaces between tabs.
An application can use the SetTabStops method to generate tabular output on a graphics surface. For example, Listing 5.10 uses SetTabStops to generate a tabular data report. In this example we create a StringFormat object and set its tab stops using the SetTabStops method, and then we call the DrawString method.
In Listing 5.10 we create a table that lists the grades of a student in tabular format. The table has four columns: ID, Math, Physics, and Chemistry. These columns list the grades obtained by a student. As the listing shows we create a StringFormat object and set the tab stops using the SetTabStops method.
LISTING 5:10: Using tab stops to draw tabular data on a graphics surface
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
//Create a Graphics object
Graphics g = this.CreateGraphics();
g.Clear(this.BackColor);
//Some text data
string text = "ID\tMath\tPhysics\tChemistry\n";
text = text +
"------- - \t ------- - \t ------- - \t ------- - \n";
text = text + "1002\t76\t89\t92\n";
text = text + "1003\t53\t98\t90\n";
text = text + "1008\t99\t78\t65\n";
//Create a font
new Font("Verdana", 10, FontStyle.Bold);
Font tahomaFont =
new Font("Tahoma", 16);
//Create brushes
SolidBrush blackBrush = new SolidBrush(Color.Black);
SolidBrush redBrush = new SolidBrush(Color.Red);
//Create rectangle
Rectangle rect = new Rectangle(10, 50, 350, 250);
//Create a StringFormat object
StringFormat strFormat = new StringFormat();
//Set tab stops of String format
strFormat.SetTabStops(5, new float[] { 80, 100, 80, 80 });
//Draw String
g.DrawString("Student Grade Table",
tahomaFont,
blackBrush, new Rectangle
(10, 10, 300, 100));
g.DrawString("===========",
tahomaFont, blackBrush,
new Rectangle(10, 23, 300, 100));
//Draw string with tab stops
g.DrawString(text, verdanaFont, redBrush, rect, strFormat);
//Dispose of GDI+ objects
tahomaFont.Dispose();
redBrush.Dispose();
blackBrush.Dispose();
g.Dispose();
}
}
}