开始使用Reports for WinForms > 打印和预览功能入门 > 制作一个简单的表格 |
在文档中,表格是最有用的功能之一。表格既可以将数据以表格的形式展现出来,也可以用来为文档中其他元素提供布局。C1PrintDocument 控件提供了全功能的表格。在本节,你会学习如何开始使用表格。我们会以C1PrintDocument 控件快速入门中创建的“Hello World”范例应用程序为基础,在其中添加一个表格。
制作简单的表格:
注意:文章中的范例代码片段都是假设已经在使代码文件中用了"using C1.C1Preview;" 指令(这是C#语法,其他语言也有等效的写法),因此我们可以只使用类名(例如RenderText)而不必使用完全限定类型名(C1.C1Preview.RenderText)。 |
Visual Basic
Visual Basic |
拷贝代码
|
---|---|
Dim rt As New RenderTable() Me.C1PrintDocument1.Body.Children.Add(rt) Dim row As Integer = 0 Do While (row < 10) Dim col As Integer = 0 Do While (col < 6) rt.Cells.Item(row, col).Text = String.Format("Cell ({0},{1})", row, col) col += 1 Loop row += 1 Loop |
C#
C# |
拷贝代码
|
---|---|
RenderTable rt = new RenderTable(); this.c1PrintDocument1.Body.Children.Add(rt); for (int row = 0; row < 10; ++ row) { for (int col = 0; col < 6; ++ col) { rt.Cells[row, col].Text = string.Format("Cell ({0},{1})", row, col); } } |
不要忘记在文档中调用Generate方法
Visual Basic
Visual Basic |
拷贝代码
|
---|---|
Me.C1PrintDocument1.Generate() |
C#
C# |
拷贝代码
|
---|---|
this.c1PrintDocument1.Generate(); |
运行程序看一下
预览中显示的文档会看起来跟下图很相似
这个简单的例子展示了在C1PrintDocument控件中使用表格的几个重要方面的内容:
从0开始计数)。如果你修改代码,例如在(10,7)位置的单元格上添加文本,表格就会变成11行8列。
Visual Basic
Visual Basic |
拷贝代码
|
---|---|
rt.Cells(10, 7).Text = "text at row 10, column 7" |
C#
C# |
拷贝代码
|
---|---|
rt.Cells[10, 7].Text = "text at row 10, column 7"; |
Visual Basic
Visual Basic |
拷贝代码
|
---|---|
rt.Style.GridLines.All = LineDef.Default |
C#
C# |
拷贝代码
|
---|---|
rt.Style.GridLines.All = LineDef.Default; |
? 默认情况下,表格的宽度与它父级对象在客户端呈现的宽度一致(这个例子中是整个页面),并且每列的宽度等分。行的高度则是自动分配的。因此,如果你添加一行,并在其中任意一个单元格中添加一串长文本,你会发现单元格所属的行会自动向下扩展来容纳全部的文本内容。例如,在我们的例子中添加下方的代码就会生成如下图一样的表格(这个表格包含了上文描述的两个改动)
Visual Basic
Visual Basic |
拷贝代码
|
---|---|
rt.Cells(3, 4).Text = "A long line of text showing that table rows stretch " + "to accommodate all content." |
C#
C# |
拷贝代码
|
---|---|
rt.Cells[3, 4].Text = "A long line of text showing that table rows stretch " + "to accommodate all content."; |
你可以参考创建上述文档的完整form load事件处理代码:
Visual Basic
Visual Basic |
拷贝代码
|
---|---|
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.C1PrintDocument1.Body.Children.Add(New RenderText("Hello, World!")) Dim rt As New RenderTable() Me.C1PrintDocument1.Body.Children.Add(rt) Dim row As Integer = 0 Do While (row < 10) Dim col As Integer = 0 Do While (col < 6) rt.Cells.Item(row, col).Text = String.Format("Cell ({0},{1})", row, col) col += 1 Loop row += 1 Loop rt.Cells(3, 4).Text = "A long line of text showing that table rows " + "stretch to accommodate all content." rt.Cells(10, 7).Text = "text at row 10, column 7" rt.Style.GridLines.All = LineDef.Default Me.C1PrintDocument1.Generate() End Sub |
C#
C# |
拷贝代码
|
---|---|
private void Form1_Load(object sender, EventArgs e) { this.c1PrintDocument1.Body.Children.Add(new RenderText("Hello, World!")); RenderTable rt = new RenderTable(); this.c1PrintDocument1.Body.Children.Add(rt); for (int row = 0; row < 10; ++row) { for (int col = 0; col < 6; ++col) { rt.Cells[row, col].Text = string.Format("Cell ({0},{1})", row, col); } } rt.Cells[3, 4].Text = "A long line of text showing that table rows " + "stretch to accommodate all content."; rt.Cells[10, 7].Text = "text at row 10, column 7"; rt.Style.GridLines.All = LineDef.Default; this.c1PrintDocument1.Generate(); } |