此基于任务的帮助假设你很熟悉在Visual Studio里编程,并且知道一般如何使用C1TrueDBGrid控件。如果你不熟悉True
DBGrid for WinForms 产品,第一步请参见, WinForms的的True DBGrid教程教程 (Section 12) 。在此章节的每一个主题都使用True DBGrid for WinForms产品提供了指定任务的解决方案。
每一个基于任务的帮助主题也设想你已经创建了一个新的.NET工程。一些例子中,引用被默认安装在Documents\ComponentOne Samples\Common上的C1NWind.mdb 数据库。
增加一个新的行到C1TrueDBGrid,使用AllowAddNew 属性和UpdateData 方法。完成下面的步骤:
在此设计器中在此设计器中
在属性窗口中放置AllowAddNew 属性并设置它的值为True. 在代码中在代码中添加下面的代码到Form_Load事件:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.AllowAddNew = True |
To write code in C#
C# |
this.c1TrueDBGrid1.AllowAddNew = true; |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.MoveLast() |
To write code in C#
C# |
this.c1TrueDBGrid.MoveLast(); |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Row = Me.C1TrueDBGrid1.Row + 1 |
To write code in C#
C# |
this.c1TrueDBGrid1.Row = this.c1TrueDBGrid1.Row + 1; this.c1TrueDBGrid1.Select(); |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Columns(0).Text = "New Row" |
To write code in C#
C# |
this.c1TrueDBGrid1.Columns[0].Text = "New Row"; this.c1TrueDBGrid1.Columns[1].Text = "New Row"; this.c1TrueDBGrid1.Columns[2].Text = "New Row"; |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.UpdateData() |
To write code in C#
C# |
this.c1TrueDBGrid1.UpdateData(); |
在这个例子中,新的行已经被添加到了C1NWind.mdb:
有一个 SelectedRows 属性指出一个集合,该集合包含一个在网格中的所有被选中的行的引用。
高亮一行不选择该行。为了被选中的行,其必须被添加到SelectedRowCollection。 使用Add方法完成。
添加下面的代码到Select按钮的Click事件:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.SelectedRows.Add(Me.C1TrueDBGrid1.Bookmark) |
To write code in C#
C# |
this.c1TrueDBGrid1.SelectedRows.Add(this.c1TrueDBGrid1.Bookmark); |
使用该例子,当前行被选中:
参见教程教程5: 使用书签选择多行使用书签选择多行 (Section 12.5)为例,Add 方法被使用。
访问在网格中被选中行的值,你必须访问SelectedRows 集合。使用下面的代码来输出被选中的每一行到调试窗口:
To write code in Visual Basic
Visual Basic |
Dim row As Integer |
To write code in C#
C# |
int row; foreach (int row in this.c1TrueDBGrid1.SelectedRows) { |
你可以使用网格的下标来访问行。使用下面的代码:
To write code in Visual Basic
Visual Basic |
Dim row As Integer |
Next
To write code in C#
C# |
int row; foreach (int row in this.c1TrueDBGrid1.SelectedRows) { |
在这个例子中,下面的代码被添加到了教程教程5: 使用书签选择多行使用书签选择多行 (Section 12.5)的Button1_Click 事件:
To write code in Visual Basic
Visual Basic |
Dim row As Integer |
To write code in C#
C# |
int row; foreach (int row in this.c1TrueDBGrid1.SelectedRows) { |
选择行的每一个composer的Last名字被输出到调试窗口中:
下面的基于任务的帮助主题详细地介绍了,你如何限制你的用户同True DBGrid for WinForms之间的交互。例如,你可以通过排序,编辑等阻止用户和网格的交互。
使列排序不可用,设置AllowSort 属性为False。该属性可以在设计器中或者在代码中被设置。
在设计器中
在属性窗口中放置AllowSort属性并设置它的值为False.
添加下面的代码到Form_Load 事件以便设置AllowSort 属性为False.
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.AllowSort = False |
To write code in C#
C# |
this.c1TrueDBGrid1.AllowSort = false; |
你所完成的单击First列不排序该类:
你可能想要阻止最终用户编辑特殊单元格中的数据。你可以使用FetchCellStyle事件锁住单独的网格单元格在运行时阻止其被编辑。为了锁住单元格(1, 0)中的值,完成下面的步骤:
1. 设置包含单元格的列的FetchStyle 属性值为True.
在设计器中在设计器中
打开C1TrueDBGrid Designer。。如何访问C1TrueDBGrid设计器设计器,参见访问访问C1TrueDBGrid 设计器设计器
(Section 6.6.1)。在右边窗格,通过单击它的猎头来选择First 列。它也能从工具条中的下拉框中被选择。在左边窗格,单击 Display Columns标签。
设置FetchStyle属性值为True. 单击OK来关闭设计器。
在代码中在代码中添加下面的代码到Form_Load事件:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Splits(0).DisplayColumns(0).FetchStyle = True |
To write code in C#
C# |
this.c1TrueDBGrid1.Splits[0].DisplayColumns[0].FetchStyle = true; |
2. 只为行1设置CellStyle对象的Locked属性为True :
To write code in Visual Basic
Visual Basic |
Private Sub C1TrueDBGrid1_FetchCellStyle(ByVal sender As Object, ByVal e As |
To write code in C#
C# |
private void C1TrueDBGrid1_FetchCellStyle(object sender, |
在该单元格(1, 0) 的值不能被编辑:
使网格中的列冻结,设置Frozen属性值为True。冻结列阻止其以及索引小于它的列滚动。该属性可以在设计器中或者代码中被设置。
该列也能通过选择Last 从工具条中的下拉列表被选择。
添加下面的代码到Form_Load 事件以使Last列被冻结:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Splits(0).DisplayColumns("Last").Frozen = True |
To write code in C#
C# |
this.c1TrueDBGrid1.Splits[0].DisplayColumns["Last"].Frozen = true; |
First和Last列columns都被冻结,并且当Grid被滚动到最右边时将还在网格中保留:
在指定列中限制编辑,设置Locked 属性的值为True。该属性可以在设计器或者代码中被设置。
完成下面的步骤以锁定Last 列:
该列也可以通过工具条上的下拉列表选择Last使其被选中。
添加下面的代码到Form_Load事件以锁定Last 列:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Splits(0).DisplayColumns("Last").Locked = True |
To write code in C#
C# |
this.c1TrueDBGrid1.Splits[0].DisplayColumns["Last"].Locked = true; |
你所完成的在 Last 列中的单元格不能被编辑,但是其他的列可以被编辑:
下面的基于任务的帮助主题详细地描述了你可以改变True DBGrid for WinForms 控件的外观。例如,你可以添加渐变,改变字体,设置背景颜色和行高度等。
为了添加渐变来填充列,设置GradientMode, BackColor,和 BackColor2 属性。而且,设置the GammaCorrection属性为True以便渐变色有一个统一的强度。这些属性可以在设计器中或者代码中被设置。
完成下面的步骤,使用C1TrueDBGrid Tasks 菜单来设置渐变填充:
渐变填充也可以通过C1TrueDBGrid Designer被设置。为了使用设计器设置渐变填充,完成下面的步骤:
C1TrueDBGrid Designer (Section 6.6.1).
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Splits(0).DisplayColumns("Last").Style.GradientMode = |
To write code in C#
C# |
this.c1TrueDBGrid1.Splits[0].DisplayColumns["Last"].Style.GradientMode = C1.Win.C1TrueDBGrid.GradientModeEnum.ForwardDiagonal; |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Splits(0).DisplayColumns("Last").Style.BackColor2 = Color.Aqua |
To write code in C#
C# |
this.c1TrueDBGrid1.Splits[0].DisplayColumns["Last"].Style.BackColor2 =Color.Aqua; |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Splits(0).DisplayColumns("Last").Style.GammaCorrection = True |
To write code in C#
C# |
this.c1TrueDBGrid1.Splits[0].DisplayColumns["Last"].Style.GammaCorrection = true; |
Last 列已经有一个白色到浅绿色的正向对角线填充的渐变:
为了基于指定的标准格式化行,使用FetchRowStyles属性和FetchRowStyle 事件。在这个例子中,Birth或Death列没有值的行将被绿色高亮,其他所有的行将被锁定且用钢蓝色,Tahoma字体格式化。
在设计器中在设计器中在属性窗口中定位 FetchRowStyles属性并且这是它的值为True。。在代码中在代码中添加下面的代码到Form_Load 事件:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.FetchRowStyles = True |
To write code in C#
C# |
this.c1TrueDBGrid1.FetchRowStyles = true; |
To write code in Visual Basic
Visual Basic |
Private Sub C1TrueDBGrid1_FetchRowStyle(ByVal sender As Object, ByVal e As |
To write code in C#
C# |
private void c1TrueDBGrid1_FetchRowStyle(object sender, |
To write code in Visual Basic
Visual Basic |
' Declare variables to get the values in the columns. |
To write code in C#
C# |
// Declare variables to get the values in the columns. |
string ddate = this.c1TrueDBGrid1.Columns\["Death"\].CellText(e.Row).ToString; |
To write code in Visual Basic
Visual Basic |
' If the Birth or Death column does not contain an empty cell, disable editing and change the font. If (bday <> "" AndAlso ddate <> "") And (bday <> "" OrElse ddate <> "") Then e.CellStyle.Locked = True |
To write code in C#
C# |
// If the Birth or Death column does not contain an empty cell, disable editing and change the font. |
To write code in Visual Basic
Visual Basic |
' If the Birth or Death column contains an empty cell, highlight the row. If bday = "" Or ddate = "" Then |
To write code in C#
C# |
// If the Birth or Death column contains an empty cell, highlight the row. if (bday == ""ddate == "") { |
在Birth或者Death列中值为空的行被高亮,并且所有其他的行以不同的字体显示也不可编辑。添加一个值到空的单元格中,将改变该单元格的格式。
记录选择器列默认出现在控件的最左边,并且它包含了一个图标来指出选中的行。为了隐藏记录选择器列,设置RecordSelectors属性的值为 False。隐藏记录选择器列限制选择行。该属性可以在设计器中或者在代码中被设置。在设计器中
使用C1TrueDBGrid Designer来设置RecordSelectors属性:
在属性窗口中RecordSelectors属性也可以被设置。在属性窗口中设置 RecordSelectors:
在属性窗口中定位RecordSelectors属性并且设置它的值为False. 在代码中
添加下面的代码到Form_Load 事件来隐藏记录选择器列:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.RecordSelectors = False |
To write code in C#
C# |
this.c1TrueDBGrid1.RecordSelectors = false; |
这是你所完成的记录选择器列不可见:
为了高亮选中单元格的行,设置MarqueeStyle 属性值为HighlightRow。 这样可以在设计器或者代码中被设置。
使用设计器完成下面的步骤来高亮选中的行:
使用代码来高亮选中单元格的行,完成下面的步骤:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.MarqueeStyle = C1.Win.C1TrueDBGrid.MarqueeEnum.HighlightRow |
To write code in C#
C# |
this.c1TrueDBGrid1.MarqueeStyle = C1.Win.C1TrueDBGrid.MarqueeEnum.HighlightRow; |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.HighLightRowStyle.ForeColor = Color.WhiteSmoke |
To write code in C#
C# |
this.c1TrueDBGrid1.HighLightRowStyle.ForeColor = Color.WhiteSmoke; |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.HighLightRowStyle.BackColor = Color.Navy |
To write code in C#
C# |
this.c1TrueDBGrid1.HighLightRowStyle.BackColor = Color.Navy; |
当单元格被选中时,整行被高亮,前景色为WhiteSmoke背景色为Navy:
你可以通过设置MarqueeStyle 和SelectedStyle属性禁用单元格高亮。对于选中的高亮行,设置 MarqueeStyle属性值为NoMarquee。参见高亮当前行或者单元格高亮当前行或者单元格 (Section 8.6)详细地描述。为了禁用使选中的样式,改变SelectedStyle属性的值。
使用设计器完成下面的步骤来高亮选中单元格对应的行:
使用代码来高亮选中单元格对应的行,完成下面的步骤:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.MarqueeStyle = C1.Win.C1TrueDBGrid.MarqueeEnum.NoMarquee |
To write code in C#
C# |
this.c1TrueDBGrid1.MarqueeStyle = C1.Win.C1TrueDBGrid.MarqueeEnum.NoMarquee; |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.SelectedStyle.ForeColor = Color.Black |
To write code in C#
C# |
this.c1TrueDBGrid1.SelectedStyle.ForeColor = Color.Black; |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Selected.BackColor = Color.Transparent |
To write code in C#
C# |
this.c1TrueDBGrid1.Selected.BackColor = Color.Transparent; |
这是你所完成的
选中的单元格,行和列将不再显示任何表示性的高亮。
为了在一个列头中放置一张图片,设置ForegroundImage和ForeGroundPicturePosition 属性。这些属性可以在设计器中或者在代码中被设置。在任务菜单
使用C1TrueDBGrid Tasks菜单为了在一个列头中放置一张图片: 1. 在网格中选择Last列并且单击它来打开C1TrueDBGrid Tasks 菜单。
使用C1DisplayColumn Collection Editor,一张图片在设计时也可以被放置在列头。
添加下面的代码到Form_Load 事件:
To write code in Visual Basic
Visual Basic |
Dim bmp As New Bitmap("c:\sort.bmp") |
To write code in C#
C# |
Bitmap bmp = new Bitmap("c: |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Splits(0).DisplayColumns(1).HeadingStyle.ForegroundImage = bmp |
To write code in C#
C# |
this.c1TrueDBGrid1.Splits[0].DisplayColumns[1].HeadingStyle.ForegroundImage = bmp; this.c1TrueDBGrid1.Splits[0].DisplayColumns[1].HeadingStyle.ForeGroundPicturePosition= C1.Win.C1TrueDBGrid.ForeGroundPicturePositionEnum.LeftOfText; |
在这个例子中,图片出现在Last 列头上的文字的左边:
为行设置多个高度值,设置the AllowRowSizing 属性值为IndividualRows然后对行分配高度值。完成下面的步骤:
在设计器中在设计器中
在属性窗体中定位AllowRowSizing属性并设置它的值为IndividualRows.
在代码中在代码中
添加下面的代码到Form_Load 事件:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.AllowRowSizing = |
To write code in C#
C# |
this.c1TrueDBGrid1.AllowRowSizing = |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Splits(0).Rows(0).Height = 25 |
To write code in C#
C# |
this.c1TrueDBGrid1.Splits[0].Rows[0].Height = 25; this.c1TrueDBGrid1.Splits[0].Rows[1].Height = 50; |
第一个行高度被设置为25 并且第二个行高度被设置为50:
为了设置行的背景颜色,设置FetchRowStyles属性的值来触发FetchRowStyle事件. 完成下面的步骤:
在设计器中在设计器中
在属性窗体中定位FetchRowStyles 属性并且设置它的值为True. 在代码中在代码中
添加下面的代码到Form_Load 事件:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.FetchRowStyles = True |
To write code in C#
C# |
this.c1TrueDBGrid1.FetchRowStyles = true; |
To write code in Visual Basic
Visual Basic
Private Sub C1TrueDBGrid1_FetchRowStyle(ByVal sender As Object, ByVal e As |
To write code in C#
C# |
private void c1TrueDBGrid1_FetchRowStyle(object sender, |
这是你所完成的在这个例子中,在Country 列中不包含单词"Germany"的行,背景颜色为柠檬绸色:
为了设置列标题的高度,设置ColumnCaptionHeight 属性。这样可以在设计器或者在代码中被设置。
为了在设计器中设置列标题的高度,完成下面的步骤:
C1TrueDBGrid Designer
为了在代码中设置列标题的高度,完成下面的步骤:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Splits(0).ColumnCaptionHeight = Me.C1TrueDBGrid1.Splits(0).ColumnCaptionHeight * 2 |
To write code in C#
C# |
this.c1TrueDBGrid1.Splits[0].ColumnCaptionHeight = this.c1TrueDBGrid1.Splits[0].ColumnCaptionHeight * 2; |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Columns(0).Caption = "Composer's First Name" |
To write code in C#
C# |
this.c1TrueDBGrid1.Columns[0].Caption = "Composer's First Name"; |
包含名的列的标题被设置为Composer's First Name并且跨度两行:
一个列的字体样式可以在设计器中或者在代码中被设置。
为了设置字体样式使用 C1TrueDBGrid任务任务菜单,完成下面的步骤:
字体样式也可以通过C1TrueDBGrid 设计器设计器被设置。使用设计器设置字体样式:
列也可以从工具条上的下拉列表中选择Country 列来被选择。
使用代码来设置字体样式,完成下面的步骤:
To write code in Visual Basic
Visual Basic |
Dim fntFont As Font |
To write code in C#
C# |
Font fntFont; |
To write code in Visual Basic
Visual Basic |
fntFont = New Font("Times New Roman", |
To write code in C#
C# |
fntFont = new Font("Times New Roman", |
在这个例子中,Country 列的行目前是Times New Roman字体并且是加粗的:
为获取关于特殊的单元格样式的更多信息,参见应用样式到单元格应用样式到单元格 (Section 10.3)。
你可能选择对其列头或者不对齐列头。在下面的例子中,Last 列的标题被居中:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Splits(0).DisplayColumns("Last").HeadingStyle.HorizontalAlignment = |
To write code in C#
C# |
this.c1TrueDBGrid1.Splits[0].DisplayColumns["Last"].HeadingStyle.HorizontalAlignment = AlignHorzEnum.Center; |
First 列已经被中心对齐了:
为了对齐网格中的所有列头,循环每一个列。
在运行时,网格中单元格的焦点通过用户的鼠标和键盘与网格之间的交互被决定。然而,你可以使用网格中的Col和Row属性来设置网格中的列和行获得焦点。
在此主题中,你可以添加两个NumbericUpDown 控件到表单中。当这些框中的值改变时,网格的获得焦点的列和行将改变。完成下面的步骤:
设置Label2.Text 值为"Row:".
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Col = Me.NumericUpDown1.Value |
To write code in C#
C# |
this.c1TrueDBGrid1.Col = this.numericUpDown1.Value; |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Row = Me.NumericUpDown2.Value |
To write code in C#
C# |
this.c1TrueDBGrid1.Row = this.numericUpDown2.Value; |
这是你所完成的改变在NumericUpDown 中的值。注意网格的焦点的改变,和网格的滚动使列和行的焦点进入到视图中:
当创建一个工程时,C1TrueDBGrid为任何一个错误显示一个消息。你必须关闭内部错误处理。
完成下面的步骤:
To write code in Visual Basic
Visual Basic |
Private Sub C1TrueDBGrid1_Error(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.ErrorEventArgs) Handles C1TrueDBGrid1.Error e.Handled = True |
To write code in C#
C# |
private void c1TrueDBGrid1_Error(object sender, |
To write code in Visual Basic
Visual Basic |
Private Sub C1TrueDBGrid1_Error(ByVal sender As Object, ByVal e As |
To write code in C#
C# |
private void c1TrueDBGrid1_Error(object sender, C1.Win.C1TrueDBGrid.ErrorEventArgs e) { if (c1TrueDBGrid1.Columns[c1TrueDBGrid1.Col].DataField == "CategoryID") { else { |
为了改变网格中列的顺序,在代码中使用C1TrueDBGrid Designer 或者在代码中设置RemoveAt和Insert 方法。在设计器中
为了改变设计器中网格中列的顺序,完成下面的步骤:
C1TrueDBGrid设计器设计器 (Section 6.6.1)。
在代码中为了改变网格中列的顺序,完成下面的步骤:
To write code in Visual Basic
Visual Basic |
Dim dispColumn As C1.Win.C1TrueDBGrid.C1DisplayColumn dispColumn = Me.C1TrueDBGrid1.Splits(0).DisplayColumns(2) |
To write code in C#
C# |
C1.Win.C1TrueDBGrid.C1DisplayColumn dispColumn; |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Splits(0).DisplayColumns.RemoveAt(2) |
To write code in C#
C# |
this.c1TrueDBGrid1.Splits[0].DisplayColumns.RemoveAt(2); this.c1TrueDBGrid1.Splits[0].DisplayColumns.Insert(0, dispColumn); |
Country列出现在网格中First 列的前面:
当网格改变尺寸时,为了伸展或收缩列,设置SpringMode属性的值为True并且为每一列设置MinWidth属。这些可以在设计器或者代码中完成。
在设计器中为了扩展或者收缩列,完成下面的步骤:
C1TrueDBGrid设计器设计器 (Section 6.6.1)。
SpringMode 属性也可以在属性窗口中被设置。
该列也可以在工具条中的下拉列表中通过选择First 被选择。
在代码中,当网格改变尺寸时为了伸展或者收缩这些列,完成下面的步骤:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.SpringMode = True |
To write code in C#
C# |
this.c1TrueDBGrid1.SpringMode = true; |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Splits(0).DisplayColumns("First").MinWidth = 50 |
To write code in C#
C# |
this.c1TrueDBGrid1.Splits[0].DisplayColumns["First"].MinWidth = 50; |
这是你所完成的当网格被水平方向改变尺寸时,这些列将成比例地伸展或者收缩,除过First 列将只收缩到50:
网格数据可以作为分隔文本文件,Excel, HTML, PDF,或者RTF 文件被导出。下面的表格描述了一些方法,这些方法被用作导出文件类型:
文件类型 | 方法 | 描述 |
All | ExportTo | 打开一个对话框,在该对话框中用户可以选择一个导出格式。 |
Delimited | ExportToDelimitedFile | 从网格中导出指定的行到指定的文件,该文件作为分隔文本文件。 |
Excel | ExportToExcel | 导出网格到一个Excel文件。 |
|
|
|
HTML | ExportToHTML | 导出网格到一个HTML文件。 |
ExportToPDF | 导出网格到一个PDF文件。 | |
RTF | ExportToRTF | 导出网格到一个RTF文件。 |
注意注意: C1TrueDBGrid的导出特征使Reports for WinForms的内部组件,如果你接收了一个Assembly相关的错误,你可能需要引用 Reports for WinForms程序集(C1.Win.C1Report 和C1.C1Report)。 |
为了设置导出方法的其中一个,添加合适的代码到Export 按钮的Click事件:
为了设置ExportTo方法,添加下面的代码到Export 按钮的Click事件:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.ExportTo() |
To write code in C#
C# |
this.c1TrueDBGrid1.ExportTo(); |
注意注意: C1TrueDBGrid的导出特征使用Reports for WinForms的内部组件,如果你接收了一个Assembly相关的错误,你可能需要引用Reports for WinForms的程序集 (C1.Win.C1Report和C1.C1Report) 。
此主题阐明如下:
单击Export按钮打开TrueDBGrid Print/Export Options对话框。
为了设置ExportToDelimitedFile方法,添加下面的代码到Export 按钮的Click事件:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.ExportToDelimitedFile("c:\temp\composers.csv", |
To write code in C#
C# |
this.c1TrueDBGrid1.ExportToDelimitedFile(@"c:\temp\composers.csv", |
注意注意: C1TrueDBGrid的导出特征使用Reports for WinForms的内部组,如果你接收了一个Assembly相关的错误,你可能需要引用Reports for WinForms的程序集 (C1.Win.C1Report 和C1.C1Report)中。 |
单击Export 按钮,在代码中指定的临时目录上创建一个分隔文本文件。在文件中的每一个值都通过逗号分隔开:
为了设置ExportToExcel 方法,添加下面的代码到Export 按钮的Click 事件:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.ExportToExcel("c:\temp\composers.xls") |
To write code in C#
C# |
this.c1TrueDBGrid1.ExportToExcel(@"c:\temp\composers.xls"); |
注意注意: C1TrueDBGrid的导出特征使用Reports for WinForms的内部组,如果你接收了一个Assembly相关的错误,你可能需要引用Reports for WinForms的程序集 (C1.Win.C1Report 和C1.C1Report)。
单击Export按钮,在代码中指明的临时目录上创建一个Excel文件:
为了设置ExportToHTML方法,添加下面的代码到Export 按钮的Click事件:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.ExportToHTML("c:\temp\composers.html") |
To write code in C#
C# |
this.c1TrueDBGrid1.ExportToHTML(@"c:\temp\composers.html"); |
注意注意: C1TrueDBGrid的导出特征使用Reports for WinForms的内部组,如果你接收了一个Assembly相关的错误,你可能需要引用Reports for WinForms的程序集 (C1.Win.C1Report 和C1.C1Report)。
单击Export 按钮,在代码中指明的临时的目录上创建一个HTML文件:
为了设置ExportToPDF 方法,添加下面的代码到Export 按钮的Click事件:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.ExportToPDF("c:\temp\composers.pdf") |
To write code in C#
C# |
this.c1TrueDBGrid1.ExportToPDF(@"c:\temp\composers.pdf"); |
注意注意: C1TrueDBGrid的导出特征使用Reports for WinForms的内部组,如果你接收了一个Assembly相关的错误,你可能需要引用Reports for WinForms的程序集 (C1.Win.C1Report 和C1.C1Report)。
单击Export按钮,在临时的目录上创建一个PDF文件:
设置 ExportToRTF方法,添加下面的代码到Export 按钮的Click 事件:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.ExportToRTF("c:\temp\composers.rtf") |
To write code in C#
C# |
this.c1TrueDBGrid1.ExportToRTF(@"c:\temp\composers.rtf"); |
注意注意: C1TrueDBGrid的导出特征使用Reports for WinForms的内部组,如果你接收了一个Assembly相关的错误,你可能需要引用Reports for WinForms的程序集 (C1.Win.C1Report 和C1.C1Report)。
Visual Basic |
If Me.C1TrueDBGrid1.FocusedSplit.Rows(Me.C1TrueDBGrid1.Row).RowType = |
To write code in C#
C# |
if (this.c1TrueDBGrid1.FocusedSplit.Rows[this.c1TrueDBGrid1.Row].RowType == C1.Win.C1TrueDBGrid.RowTypeEnum.DataRow) |
为了改变C1NWind.mdb 引用的位置,你可以编辑OleDbConnection的ConnectionString属性,你可以参见Data Binding (Section 7) 为获取绑定网格的更多的信息。
完成下面的步骤:
一个数据集合连接字符串被添加到你的工程。另外,Visual Studio自动创建代码来填充数据集。
当程序运行时,为了使AddNew行为当前行,使用AllowAddNew属性,MoveLast 和Select 方法。完成下面的步骤:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.AllowAddNew = True |
To write code in C#
C# |
this.c1TrueDBGrid1.AllowAddNew = true; |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.MoveLast() |
To write code in C#
C# |
this.c1TrueDBGrid.MoveLast(); |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Row = Me.C1TrueDBGrid1.Row + 1 |
To write code in C#
C# |
this.c1TrueDBGrid1.Row = this.c1TrueDBGrid1.Row + 1; |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Select() |
To write code in C#
C# |
this.c1TrueDBGrid1.Select(); |
当程序运行时,当前行是AddNew行:
为了保存网格的外观,使用SaveLayout方法,该方法将在XML 文件中保存外观。可以在设计器中或者代码中完成。
完成下面的步骤以保存网格的外观:
添加下面的代码到一个按钮的 Click事件来保存网格的外观:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.SaveLayout("c:\temp\ComposerLayout.xml") |
To write code in C#
C# |
this.c1TrueDBGrid1.SaveLayout(@"c:\temp\ComposerLayout.xml"); |
这是你所完成的
你已经学习到了如何使用SaveLayout 方法来保存外观到一个XML文件中。
使用增强的搜索,对一个列的条目进行搜索,添加Timer组件到窗体上,然后设置KeyPress和Tick 事件。
完成下面的步骤:
在设计器中在设计器中
在属性框中为Timer1 定位Interval属性并且设置它的值为1000.
在代码中在代码中
添加下面的代码到Form_Load事件:
To write code in Visual Basic
Visual Basic |
Me.Timer1.Interval = 1000 |
To write code in C#
C# |
this.timer1.Interval = 1000; |
To write code in Visual Basic
Visual Basic |
Dim searchString As String = String.Empty |
To write code in C#
C# |
string searchString = string.Empty; |
To write code in Visual Basic
Visual Basic |
Private Sub C1TrueDBGrid1_KeyPress(ByVal sender As Object, ByVal e As |
' Search the next row, wrapping the column if needed. current = (current + 1) Mod count End While
' Update the grid's current row.
Me.C1TrueDBGrid1.Row = current
' Highlight the entry.
Me.C1TrueDBGrid1.MarqueeStyle =
C1.Win.C1TrueDBGrid.MarqueeEnum.HighlightCell
' Clear the search string at 1 second.
Me.Timer1.Enabled = True
End Sub
To write code in C#
C# |
private void c1TrueDBGrid1_KeyPress(object sender, this.searchString += e.KeyChar; int count = this.c1TrueDBGrid1.Splits[0].Rows.Count; int start = this.c1TrueDBGrid1.Row; int current = (start + 1) % count; string s = this.c1TrueDBGrid1[current, this.c1TrueDBGrid1.Col].ToString(); if( s.Substring(0, this.searchString.Length).ToUpper() == this.searchString.ToUpper() ) break; current = (current + 1) % count; } this.c1TrueDBGrid1.Row = current; this.c1TrueDBGrid1.MarqueeStyle = |
// Clear the search string at 1 second.
this.timer1.Enabled = true; }
5. 为定时器添加Tick事件:
To write code in Visual Basic
Visual Basic |
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick |
To write code in C#
C# |
private void timer1_Tick(object sender, System.EventArgs e) { this.searchString = string.Empty; this.timer1.Enabled = false; |
当用户输入,该搜索将高亮包含字母的单元格。在这个例子中,在Last 列键入V,则高亮"Varese".
如果不止一个条目以相同的字母开始,键入下一个字母将高亮含这些字母的条目。例如,在Last 列键入Viv ,将高亮"Vivaldi":
Note: 1秒后搜索结果将被重置。 |
为这些新的行设置默认的值,在OnAddNew事件中设置列的Value属性。如果添加多个相同信息的行,这会很有用的。完成下面的步骤:
在设计器中在设计器中
在属性框中定位AllowAddNew属性并设置它的值为True. 在代码中在代码中添加下面的代码到Form_Load事件中:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.AllowAddNew = True |
To write code in C#
C# |
this.c1TrueDBGrid1.AllowAddNew = true; |
To write code in Visual Basic
Visual Basic |
Private Sub C1TrueDBGrid1_OnAddNew(ByVal sender As Object, ByVal e As |
To write code in C#
C# |
private void c1TrueDBGrid1_OnAddNew(object sender, System.EventArgs e) { this.c1TrueDBGrid1.Columns["Country"].Value = "United States"; |
当一个新行被添加时,在Country 列中的值自动添加为"United States":
你可以很容易地显示网格底部的所有值的总和。这样做,你将需要通过设置ColumnFooters属性的值为True,来使列脚
可见;然后你将创建一个方法以计算列的总和。注意在下面的例子中,网格已经被绑定到Northwind 数据库中的Products表。
完成下面的步骤来计算UnitsInStock 列的总和:
To write code in Visual Basic
Visual Basic |
Public Sub CalculateFooter() |
To write code in C#
C# |
public void CalculateFooter() { int i = 0; double sum = 0; for (i = 0; i <= this.c1TrueDBGrid1.Splits[0].Rows.Count - 1; i++) { sum += |
\} this.c1TrueDBGrid1.Columns\["UnitsInStock"\].FooterText = Convert.ToString(sum); \} 这些代码创建{*}CalculateFooter* 方法来计算{_}UnitsInStock_ 列的总和。 |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.ColumnFooters = True |
To write code in C#
C# |
c1TrueDBGrid1.ColumnFooters = true; CalculateFooter(); |
该代码设置列脚可见并初始化CalculateFooter 方法。这是你所完成的
UnitsInStock 列的列的总和显示在网格的底部:
使用Row和Col 属性,你可以获得当前选中的单元格的行和列的下标。在下面的例子中,你将添加两个文本框到你的网格的应用上,一个显示当前选中的行而另一个显示当前的列。完成下面的步骤,显示当前的行和列:
设置 Label1的Text属性值为"Row".
设置 Label2的Text属性值为"Column".
To write code in Visual Basic
Visual Basic |
Private Sub C1TrueDBGrid1_RowColChange(ByVal sender As System.Object, ByVal e As |
To write code in C#
C# |
private void c1TrueDBGrid1_RowColChange(object sender, RowColChangeEventArgs e) { this.textBox1.Text = c1TrueDBGrid1.Row; this.textBox2.Text = c1TrueDBGrid1.Col; |
此代码将设置当前的行和列的下标,使其出现在文本框中。
这是你所完成的运行你的应用程序并观察行和列的文本框,为选中的网格的单元格显示行和列的下标:
选择不同的单元格,并注意文本框中文本的改变,并显示当前选中的单元格的行和列的下标。
在True DBGrid for WinForms先前的版本中,在列的DateTime 上的DataType 中默认的行为,是在列中既显示日期又显示时间。当前版本默认的行为是只显示日期。在下面的步骤中。你将设置列的NumberFormat 属性值为"g" (该值根据你当前的文化格式显示简短的日期和简短的时间) ,在运行时,为了日期和时间被显示,你将会禁用DateTimePicker用于编辑日期和时间。
完成下面的步骤,在一个列中既显示日期又显示时间:
添加下面的代码到Form_Load事件,在第二列中既显示日期又显示时间:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Columns(1).EnableDateTimeEditor = False |
To write code in C#
C# |
this.c1TrueDBGrid1.Columns[1].EnableDateTimeEditor = false; this.c1TrueDBGrid1.Columns[1].NumberFormat = "g"; |
这是你所完成的
选中的列既显示日期又显示时间。
在运行时的进入单元格编辑模式通常通过用户的鼠标和键盘同网格的相互作用。然而,如果你选择,也可以用代码设置当前获得焦点的单元格进入编辑模式。为了进入编辑模式,简单地设置EditActive属性值为True.
在下面的步骤中,你将添加两个标签和文本框到你的工程中,来选择一个单元格进行编辑,一个按钮来改变单元格的焦点,并且另一个按钮输入获得焦点的单元格到编辑模式。
完成下面的步骤:
设置 Label1.Text 值为 "Column:". 设置 TextBox1.Text 值为 "0". 设置 Label2.Text 值为 "Row:".
设置 TextBox2.Text 值为 "0".
5.
设置 Button11.Text 值为 "Set Focus".
设置 Button2.Text 值为 "Edit Cell".
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.Col = Me.TextBox1.Text |
To write code in C#
C# |
this.c1TrueDBGrid1.Col = this.textBox1.Text; this.c1TrueDBGrid1.Row = this.textBox2.Text; |
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.EditActive = True |
To write code in C#
C# |
this.c1TrueDBGrid1.EditActive = true; |
使用文本框和按钮,你可以改变单元格使其获得焦点,而且你可以让选中的单元格进入编辑模式。完成下面的步骤:运行你的应用程序.
选中的单元格将输入编辑模式:
为了改变列过滤编辑器的语言,你可以使用Language 属性。
添加下面的代码到 Form_Load 事件:
To write code in Visual Basic
Visual Basic |
Me.C1TrueDBGrid1.AllowFilter = True |
To write code in C#
C# |
this.c1TrueDBGrid1.AllowFilter = true; |
这个主题阐明了下面这些:
列过滤编辑器的语言匹配在Language属性中指定的语言。
你可以创建一个自定义的打印预览,并且自定义你的网格在打印时如何显示。你这样做可以使用Init 方法。为了
像FormBorderStyle, MaximizeBox, MinimizeBox, ControlBox一样重载属性,因此从
C1.Win.C1TrueDBGrid.PrintForm中继承窗体,重载PrintForm的Init 方法。第一步调用base.Init(),然后设置你想设置的属性。完成下面的步骤:
To write code in Visual Basic
Visual Basic |
FillGrid() |
To write code in C#
C# |
FillGrid(); |
To write code in Visual Basic
Visual Basic |
Private Sub FillGrid() dc = New DataColumn() dc.DataType = System.Type.[GetType]("System.DateTime") dc.ColumnName = "DT1" dt.Columns.Add(dc) dc = New DataColumn() |
dc.DataType = System.Type.[GetType]("System.DateTime") dc.ColumnName = "DT2" dt.Columns.Add(dc) ' do string dc = New DataColumn() dc.DataType = System.Type.[GetType]("System.DateTime") dc.ColumnName = "DT3" dt.Columns.Add(dc) dr("DT2") = DateTime.Now.AddMonths dr("DT3") = DateTime.Now.AddYears dt.Rows.Add(dr) Next |
To write code in C#
C# |
private void FillGrid() { int maxrows = 5; dc = new DataColumn(); dc.DataType = System.Type.GetType("System.DateTime"); dc.ColumnName = "DT1"; dt.Columns.Add(dc); dc = new DataColumn(); dc.DataType = System.Type.GetType("System.DateTime"); dc.ColumnName = "DT2"; dt.Columns.Add(dc); dc = new DataColumn(); dc.DataType = System.Type.GetType("System.DateTime"); dc.ColumnName = "DT3"; dt.Columns.Add(dc); Random rnd = new Random(); for (int i = 0; i < maxrows; i++) { dr = dt.NewRow(); dr["DT1"] = DateTime.Now.AddDays; dr["DT2"] = DateTime.Now.AddMonths; dr["DT3"] = DateTime.Now.AddYears; dt.Rows.Add(dr); } this.c1TrueDBGrid1.DataSource = dt; this.c1TrueDBGrid1.Columns["DT1"].EnableDateTimeEditor = true; this.c1TrueDBGrid1.Columns["DT2"].EnableDateTimeEditor = true; this.c1TrueDBGrid1.Columns["DT3"].EnableDateTimeEditor = true; } |
To write code in Visual Basic
Visual Basic |
Public Class PrintForm1 |
To write code in C#
C# |
public partial class PrintForm1 : C1.Win.C1TrueDBGrid.PrintForm |
To write code in Visual Basic
Visual Basic |
Protected Overrides Sub Init() |
To write code in C#
C# |
protected override void Init() { base.Init(); FormBorderStyle = FormBorderStyle.Sizable; this.ControlBox = true; this.MinimizeBox = false; this.MaximizeBox = false; } |
To write code in Visual Basic
Visual Basic |
C1TrueDBGrid1.PrintInfo.PreviewFormClassName = "ProjectName.PrintForm" |
To write code in C#
C# |
c1TrueDBGrid1.PrintInfo.PreviewFormClassName = "ProjectName.PrintForm1"; c1TrueDBGrid1.PrintInfo.PrintPreview(); |
运行应用并且注意该应用出现一个按钮和网格显示的数据。单击预览按钮并且观察到自定义的打印预览窗体的出现。此窗体只包括Close 按钮没有Minimize和Maximize 按钮。