Page tree
Skip to end of metadata
Go to start of metadata

 视觉样式

WinForms版版True DBGrid支持模仿Office 2007 和 2010的视觉样式,您可以从C1TrueDBGrid 任务任务菜单(请参
C1TrueDBGrid 任务菜单任务菜单 (Section 6.7)获取更多信息)设置网格的VisualStyle属性来自定义视觉样式示例,也可以通过属性窗口或代码,默认网格的VisualStyle 被设置为VisualStyle.Custom,一个标准的外观不使用视觉样式和仅使用样式与属性设置的控件呈现,在C1TrueDBGrid中使用如下视觉样式: 自定义视觉样式自定义视觉样式
自定义视觉样式即通过设置几个样式和属性就能完成控件的呈现,默认设置下VisualStyle被设置为VisualStyle.Custom,网格将与下图类似:

系统视觉样式系统视觉样式
系统视觉样式的控件外观呈现基于当前的系统设置,当VisualStyle被设置为VisualStyle.System,网格将与下图类似:

Office2007Black视觉样式视觉样式
Office2007Black视觉样式的控件外观呈现基于Office 2007 黑色主题,当VisualStyle被设置为
VisualStyle.Office2007Black,网格将与下图类似:
*Office2007Blue*视觉样式视觉样式
Office2007Blue 视觉样式的控件外观呈现基于Office 2007蓝色主题,当VisualStyle被设置为
VisualStyle.Office2007Blue,网格将与下图类似:
*Office2007Silver*视觉样式视觉样式
Office2007Silver 视觉样式的控件外观呈现基于Office 2007银色主题,当VisualStyle被设置为
VisualStyle.Office2007Silver,网格将与下图类似:
*Office2010Black*视觉样式视觉样式
Office2010Black 视觉样式的控件外观呈现基于Office 2010黑色主题,当VisualStyle被设置为
VisualStyle.Office2010Black,网格将与下图类似:
*Office2010Blue*视觉样式视觉样式
Office2010Blue 视觉样式的控件外观呈现基于Office 2010蓝色主题,当VisualStyle被设置为
VisualStyle.Office2010Blue,网格将与下图类似:
*Office2010Silver*视觉样式视觉样式
Office2010Silver 视觉样式的控件外观呈现基于Office 2010银色主题,当VisualStyle被设置为 VisualStyle.Office2010Silver,网格将与下图类似:

 标题,列头与列脚

通过设置对应对象的Caption属性为网格,列或者拆分添加标题,例如以下代码为网格,列和拆分设置了标题:
To write code in Visual Basic

Visual Basic

Me.C1TrueDBGrid1.Caption = "Grid Caption"
Me.C1TrueDBGrid1.Columns(0).Caption = "Column 0 Caption"
Me.C1TrueDBGrid1.Splits(0).Caption = "Split 0 Caption"

To write code in C#

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="ac2f1c8c-7dfb-47c8-9775-99872d178f2e"><ac:plain-text-body><![CDATA[

this.c1TrueDBGrid1.Caption = "Grid Caption"; this.c1TrueDBGrid1.Columns.[0].Caption = "Column 0 Caption"; this.c1TrueDBGrid1.Splits[0].Caption = "Split 0 Caption";

]]></ac:plain-text-body></ac:structured-macro>

 列与网格标题

对于C1DataColumn对象,Caption 属性指定了每一个列标题域中的文本。

若使用WinForms版版True DBGrid控件绑定一个数据集,列标题将在运行时自动设置。
列标题也可以在设计器中使用C1TrueDBGrid Designer来设置,或在代码中使用C1DataColumnCollection
Caption 属性也作用于C1TrueDBGrid 控件自身,并为完整的网格提供了一个描述标题。

默认情况下,C1TrueDBGrid 显示每一列的标题,设置某些列的Caption 属性没有被准确的设置,此外可以通过设置ColumnHeaders属性为False 来隐藏所有的列标题。

 列注脚

正如ColumnHeaders 属性控制列标题的显示,ColumnFooters 属性控制列注脚的显示,列注脚类似于列标题的外观,但它被填充到下方。

对于每个C1DataColumn对象,FooterText 属性决定了在注脚行中显示的文本,在设计器中使用C1TrueDBGrid Designer来设置注脚文本,或者在代码中使用C1DataColumnCollection 集合,如以下示例:
To write code in Visual Basic

Visual Basic

Me.C1TrueDBGrid1.Columns(0).FooterText = "Footer 0"
Me.C1TrueDBGrid1.Columns(1).FooterText = "Footer 1"

To write code in C#

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="2a37c51a-6939-4c5b-8e15-c45bc8c20953"><ac:plain-text-body><![CDATA[

this.c1TrueDBGrid1.Columns[0].FooterText = "Footer 0"; this.c1TrueDBGrid1.Columns[1].FooterText = "Footer 1";

]]></ac:plain-text-body></ac:structured-macro>

不像Caption属性,FooterText 属性不会从一个绑定数据源中自动设置,因此您需要自行设置。

 多行列头与列脚

拆分的特定属性ColumnCaptionHeight 控制列头的高度,默认情况下,它依赖于HeadingStyle的格式设置,为了在列头中显示多行文本,需要提高ColumnCaptionHeight 属性来容纳多行,如以下示例:
To write code in Visual Basic

Visual Basic

With Me.C1TrueDBGrid1
.Splits(0).ColumnCaptionHeight = .Splits(0).ColumnCaptionHeight * 2
.Columns(0).Caption = "First line" + vbCrLf + "Second line"
End With

To write code in C#

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="fc3c563c-d11d-44b8-8576-ff767eb8b676"><ac:plain-text-body><![CDATA[

this.c1TrueDBGrid1.Splits[0].ColumnCaptionHeight = this.c1TrueDBGrid1.Splits[0].ColumnCaptionHeight * 2; this.c1TrueDBGrid1.Columns[0].Caption = "First line\nSecond line";

]]></ac:plain-text-body></ac:structured-macro>

注意使用"\n"来指定在标题文本内的一个换行,执行此代码后,第一列将包含两行文本,第二列的标题将垂直居中。

同样地,设置ColumnFooterHeight 属性控制列注脚的高度,当设置列的FooterText属性时使用常数指定一个换行。

 拆分标题

Split 对象也包含它自身的标题,对于一个带有拆分的网格,拆分标题可以作为第二行网格标题。

然而,拆分标题最常用于至少包含两个拆分的网格,因为它们对于最终用户来说是理想的列分类分组。

 三维显示vs.平面显示

WinForms版版True DBGrid 提供了一个标准的平面控件外观,但更多吸引人的三维显示越来越多的用户很多控件中,三
个平面外观结合形成3D外观,默认情况下,网格的FlatStyle 属性被设置为FlatModeEnum.Standard 时将会采用3-D 外观。然而,该属性只能控制3D效果是否应用于网格的边框,标题栏,列头与列脚,以及记录选择列,它并不影响网格中单元格的数据或行列的划分,以下为适用的设置:
当FlatStyle被设置为FlatModeEnum.Standard, 网格外观如下:
当FlatStyle被设置为FlatModeEnum.PopUp, 网格外观如下:
注意初始网格外观与FlatModeEnum.Flat相同,当鼠标悬停于控件元素上,元素的外观会有3D外观。
When FlatStyle is set to FlatModeEnum.Flat, the grid looks like this:

为了实现这个网格的3D外观, 包括它的内部,您可以在设计器或代码中设置以下属性:

  1. 在属性窗口中,设置RowDivider 的样式属性为Raised,或者在代码中:

To write code in Visual Basic

Visual Basic

Me.C1TrueDBGrid1.RowDivider.Style = C1.Win.C1TrueDBGrid.LineStyleEnum.Raised

To write code in C#

C#

this.c1TrueDBGrid1.RowDivider.Style = C1.Win.C1TrueDBGrid.LineStyleEnum.Raised;

  1. 在拆分集合编辑器中,对每个拆分的所有ColumnDivider样式对象设置Style 属性为LineStyleEnum.Raised,或者在代码中:

To write code in Visual Basic

Visual Basic

Dim C As C1.Win.C1TrueDBGrid.C1DisplayColumn
For Each C In Me.C1TrueDBGrid1.Splits(0).DisplayColumns
C.ColumnDivider.Style = C1.Win.C1TrueDBGrid.LineStyleEnum.Inset
Next

To write code in C#

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="698bddd3-692f-451f-b472-2d3f7ec21258"><ac:plain-text-body><![CDATA[

C1.Win.C1trueDBGrid.C1DisplayColumn C ; for each(C in this.C1trueDBGrid1.Splits[0].DisplayColumns) {
]]></ac:plain-text-body></ac:structured-macro>
C.ColumnDivider.Style = C1.Win.C1TrueDBGrid.LineStyleEnum.Raised;
}

  1. 在属性窗口中,设置BackColor 的常规样式为Lavender,或者在代码中:

To write code in Visual Basic

Visual Basic

Me.C1TrueDBGrid1.Styles("Normal").BackColor = System.Drawing.Color.Lavender

To write code in C#

C#

 


this.c1TrueDBGrid1.Styles["Normal"].BackColor = System.Drawing.Color.Lavender;
网格的外观会如下图所示:

注意,RowDivider对象的Style 属性改变为Raised 会在每个数据行中消耗额外的像素,会减少可见的行。尝试与其他颜色组合和分隔样式来达到不同的3D效果,在边框和分隔线边框和分隔线 (Section 8.4)


 边框和分隔线

RowDividerColumnDivider 属性可以使不同的水平和垂直线被选择,并且可以设置线的颜色,属性返回一个报两个属性的基本GridLines 对象,这两个属性StyleColor 定义了网格单元格框的外观,Style 属性允许的值如下:
LineStyleEnum.Double
LineStyleEnum.Inset
LineStyleEnum.Raised
LineStyleEnum.None
LineStyleEnum.Single
例如,设置RowDivider的Style属性为LineStyleEnum.None ,消除行之间的分隔线并允许您在可用区域中添加更多的数据。

对于ColumnDivider属性,您可以设置Style 属性为LineStyleEnum.None,并设置HeaderDivider 属性为False,这可
以使您可视的分组相关列,如下如所示:

 非填充区域

根据在数据源中行与列的数量,网格内的一部分可能不包含数据单元,然而,这些"死区"可以使用ExtendRightColumnEmptyRows属性来消除,通过使用BackColor属性改变死区的颜色。
 最右侧列当水平滚动网格时最后一列是完全可见的,在最后一列与网格有边框之间通常会有一个空白区域。

空白区域的颜色会根据您系统中对3D对象颜色的设置(或者按钮表面颜色),通过ExtendRightColumn 属性消除这个空白区域,该属性的默认值为False,但若设置它为True,最后一列将扩展它的宽度到网格边缘。

 未使用数据行

如果数据源包含的行少于网格能够显示的部分, 在AddNew row下方的区域 (或者最后行下方的区域,如果AllowAddNewFalse) 空白的。

空白区域的颜色依赖于您系统中3D 对象颜色的设置(或者按钮表面的颜色),通过EmptyRows属性消除这个空白区域,该属性的默认值为False,但若设置它为True,在最后使用的数据行下方网格会显示空行。

注意空白行不能被聚焦。
EmptyRowsExtendRightColumn 属性被设置为True 以确保在网格内不会出现空白区域。

 高亮当前的行或单元格

marquee字段与当前网格单元格或行的高亮区域表示有关,MarqueeStyle 属性可以被设置为几个可能的演示,所有的
MarqueeEnum 对象的枚举如下显示:
MarqueeEnum.DottedCellBorder 通过虚线边框高亮当前的单元格。
MarqueeEnum.SolidCellBorder
这是一个独特的单元格高亮显示,在使用不同的背景色时它是非常有用的(因为虚线的矩形往往是难以辨认的) 。
MarqueeEnum.HighlightCell
该样式可以完全的转换当前单元格,使它的可视效果更出众,编辑样式的BackColorForeColor 属性值可以被选择,可以在可编辑的网格中做出赏心悦目的效果。
MarqueeEnum.HighlightRow
整个行都会被高亮,但它不可能指出行中哪个是当前的单元格,为了更改高亮的颜色编辑内置
HighlightRow样式,请参阅高亮所选择单元格的行高亮所选择单元格的行 (Section 13.3.4)获取更多信息,当网格不能被编辑以及用户只能在某个时刻阅览某一条记录时该样式非常有用。
MarqueeStyleEnum.DottedRowBorder
可以为整行设置虚线矩形框,它是替代HighlightRow 的一个柔和高亮的首选。
MarqueeEnum.HighlightRowRaiseCell
该值用于网格中的3D线,因为可以通过使用"凸起"外观当前单元格来设置高亮。
MarqueeEnum.NoMarquee
该设置将选取框完全消失,这项用例非常有用,当前行都是无关的,或者您不希望引起用户对网格的注意。
MarqueeEnum.FloatingEditor
这是网格默认的选取框样式,单元格文本(事实上只有文本,而不是整个单元格)是高亮的,还有一个闪烁的文本光标 (插入记号) 在文本的结尾。

高亮的颜色就是您系统的高亮颜色,浮动编辑样式模仿了Microsoft Access数据表单的样式,闪烁的文本逛遍表示单元格是待编辑状态,因此命名选取框样式的浮动编辑器,因为没有其他的选取框样式置于同待编辑模式一样的单元格内,带有浮动编辑器的网格行为有时不同于其他的选取框样式,当MarqueeStyle属性被设置为MarqueeEnum.FloatingEditor时以下列表总结了不同:

  1. 以下属性会被浮动编辑器忽略:EditDropDownEditorStyle
  2. 当使用带有浮点编辑器的AddCellStyleAddRegexCellStyle 方法时,网格忽略当前 Conditionparameter的单元格位(CellStyleFlag.CurrentCell) 并高亮行位(CellStyleFlag.MarqueeRow) ,更多详细信息,请参阅应用样式应用样式到单元格到单元格 (Section 10.3)
  3. 浮动编辑器将不会在带有单选按钮或者图片的单元格内显示,正如项值间的自动数据转换中描述,一个虚线单元格选取框可以被选择,当当前的单元格变为常规文本显示,将返回浮动编辑器高亮。
  4. CycleOnClick 属性 (应用于ValueItemCollection) 不会有影响,当MarqueeStyle 属性被设置

MarqueeEnum.FloatingEditor

  1. 当用户双击网格内的非当前单元格,C1TrueDBGrid 控件的DoubleClick事件不会被激发,这是因为第一次点击被浮动编辑器当做开始编辑,当点击时单元格会启动编辑模式,然而,通常双击当前网格的单元格会触发DoubleClick 事件。

 行高度与自动换行

以下主题描述如何使用RowHeight属性调整网格中所有行的高度以及使用WrapText 属性自动换行。

 调整所有网格行的高度

通过在其可视编辑模式中放置网格或者在属性窗口中更改网格的RowHeight 属性在交互时交互的配置行的高度,在运行时,如果AllowRowSizing被设置为RowSizingEnum.AllRowsRowSizingEnum.IndividualRows用户可以交互的调整行高,更多详细信息请参阅运行时交互
RowHeight 属性以像素表示,然而,设置为0会导致网格重新调整其显示,以便每一行都能按照当前文本格式占一行文本,因此使用以下代码调整行高度以显示三行文本:
To write code in Visual Basic

Visual Basic

Me.C1TrueDBGrid1.RowHeight = 0
Me.C1TrueDBGrid1.RowHeight = 3 * Me.C1TrueDBGrid1.RowHeight

To write code in C#

C#

this.c1TrueDBGrid1.RowHeight = 0;
this.c1TrueDBGrid1.RowHeight = 3 * this.c1TrueDBGrid1.RowHeight;

当需要显示多行的备注字段时这项技术就会非常有效,如下例:

注意Description列的样式对象必须有它的WrapText 属性并设置为True,否则备注字段显示将在第一行后被截断。

 在单元格内自动换行

默认情况下,一个网格单元格显示一行文本,但在单元格的右边框文本会被截断,通过更改网格的RowHeight 属性及对目标列Style对象的WrapText 属性设置为True以增加多行文本,如果WrapText 设置为True(默认为False),会在单词前发生换行,否则会在单元格内只能部分显示,单元格内容将继续在下一行中显示,前提是网格的行高度能够容纳多行文本。
使用以下的循环,使所有的网格列自动换行:
To write code in Visual Basic

Visual Basic

Dim C As C1.Win.C1TrueDBGrid.C1DisplayColumn
For Each C In Me.C1TrueDBGrid1.Splits(0).DisplayColumns
C.Style.WrapText = True
Next

To write code in C#

C#

C1.Win.C1trueDBGrid.C1DisplayColumn C ; for each(C in this.C1trueDBGrid1.Splits[0].DisplayColumns) {

C.Style.WrapText = true ;
}

 更改行颜色

通过更改相邻行的背景色往往可以提高显示的可读性,当AlternatingRows 属性为True,通过使用内置的样式OddRow和和EvenRow 分别显示奇数行(第一个显示行为1)和偶数行。

 水平与垂直对齐

使用列Style 对象的HorizontalAlignment 属性控制一个列中单元格的水平放置,该属性允许的值如下:
AlignHorzEnum.General
AlignHorzEnum.Near
AlignHorzEnum.Center AlignHorzEnum.Far
AlignHorzEnum.Justify
AlignHorzEnum.General为数据单元格的默认设置,代表了基本数据类型的对齐格式,例如,字串是左对齐,而数字是右对齐。
使用Style对象的VerticalAlignment 成员控制网格单元格内的垂直放置,该属性允许的值如下:
AlignVertEnum.Top
AlignVertEnum.Center
AlignVertEnum.Bottom
对于数据单元格,默认值为AlignVertEnum.Top,对于静态网格元素,如标题栏,列标题,以及列注脚,其默认值为
AlignVertEnum.Center,请参阅默认命名样式默认命名样式 (Section 10.1.1)主题学习如何导出默认值。以下网格描述了使用HorizontalAlignmentVerticalAlignment属性的所有可能情况。

 

AlignHorzEnum.Near

AlignHorzEnum.Center

AlignHorzEnum.Far

AlignVertEnum.Top

AlignVertEnum.Center

AlignVertEnum.Bottom

AlignHorzEnum.General 和 AlignHorzEnum.Justify 设置被省略,这是因为AlignHorzEnum.General 设置文本对齐为 AlignHorzEnum.Near,数字对齐为AlignHorzEnum.Far,AlignHorzEnum.Justify 设置对齐单元格边框,但在这种情况下其外观会如AlignHorzEnum.Near 设置。
HorizontalAlignmentVerticalAlignment 属性与样式概念紧密结合,更多详细信息,请参阅如何使用样式如何使用样式
(Section 10)

  • No labels