Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Property

Description

Alpha

获取或设置当样式被呈现时的透明度控件。

BackColor

获取或设置与一个Style相关联的背景颜色。

BackColor2

获取或设置与一个Style相关联的背景颜色。

BackgroundImage

获取或设置与一个Style相关联的背景图像。

BackgroundPictureDrawMode

获取或设置一个BackgroundImage的绘制方法。

Borders

获取与该样式相关联的GridBorders

Font

获取或设置与一个Style相关联的字体。

ForeColor

获取或设置与一个Style相关联的前景颜色。

ForegroundImage

获取或设置与一个Style相关联的前景图像。

ForeGroundPicturePosition

获取或设置绘制的ForegroundImage位置。

GammaCorrection

获取或设置一个值,该值决定在线性渐变的样式呈现时是否启用伽玛校正。

GradientMode

指定线性渐变的方向。

HorizontalAlignment

获取或设置文本的水平对齐。

Locked

获取或设置一个值,该值决定在相关联的对象中能否被输入。

Name

获取或设置Style的名称。

Padding

获取或设置单元格中内容和它的边缘之间的空间。

Trimming

获取或设置修剪字串,当它不完全适合布局形状。

VerticalAlignment

获取或设置文本的垂直对齐。

WrapText

获取或设置一个值,该值决定是否文本被换行,当它不完全适合布局形状。

...

 内置命名样式

当网格先被创建时,它有一个用以显示的内置命名样式,例如,Heading样式决定了用以显示列头的属性,通过使
C1TrueDBGrid Styles Editor更改内置命名样式,在设计时统一更改网格的外观,在运行时,GridStyleCollection 提供了访问相同命名样式的集合,初始时所有网格包含十个内置样式,控件内包含以下用以显示的网格元素:

...

在标签中选定的行可以被添加到SelectedRowCollection中,也可以在代码中或通过用户交互。当MarqueeStyle 属性被设置为MarqueeEnum.HighlightRowMarqueeEnum.HighlightRowRaiseCell时,highlighted 标记的行引用当前行。当AlternatingRows 属性被设置为True时,偶数行和奇数行样式可以被使用。

...

 默认命名样式

如Microsoft Word,True DBGrid 中的一个Style 对象可以继承另一个样式中的字符,我们称之为父样式,对于新创建的网格,常规的样式是所有命名样式的父(或祖)样式,它的默认属性如下:

...

Property

Setting

HorizontalAlignment

AlignHorzEnum.Center

...

 命名样式继承

为了参阅命名样式如何继承,需要将一个网格置于窗体内并设置网格的Caption属性和它的默认列,设置默认列的FooterText 属性以及网格的ColumnFooters 属性为True,网格外观将会如下:

C1TrueDBGrid 样式编辑器样式编辑器中,在左侧面板中选择Normal 并扩展Font 节点,设置Bold 属性为True,注意到列头,列脚和网格标题都是加粗的,因而Normal样式或它的继承都内置样式。

接下来,从左侧面板中选择Heading,并在右侧面板中选择ForeColor 属性,点击Web 选项卡并选择Navy,注意到列头和网格标题栏的文本颜色现在都是白色,因此Caption样式从Heading样式中继承了它的颜色属性,列脚将保持相同的样式因为Footer样式继承了Normal 样式,而不是Heading样式。

最后,从左侧面板中选择Caption 并在右侧的面板中选择它的BackColor 属性,点击Web 选项卡,此时选择AliceBlue,注意到列头背景颜色没有改变, 并且Caption样式将从它的父样式Heading中继承他的文本颜色。

...

 更改命名样式

您可以使用.NET的集合编辑器更改GridStyleCollection,以在运行时更改整个网格的外观,例如使列头中的标题文本居中,可以更改内置Heading 样式的HorizontalAlignment 属性为AlignHorzEnum.Center
以下声明的代码结果:
To write code in Visual Basic

...

然而,它可以不必要使用C1TrueDBGrid 样式编辑器样式编辑器 或者在代码中控制GridStyleCollection 的成员命名,网格和它的控件对象给出了几个属性并返回了Style 对象,正如下一节所描述的,网格的外观可以直接通过这些对象进行微调,更多详细信息请参阅使用使用 C1TrueDBGrid样式编辑器样式编辑器 (Section 6.5)

...

 使用样式属性

正如在Microsoft Word中文本模板指定的单个文档图形的整体外观,the named members of the GridStyleCollection 对象的命名成员提供了C1TrueDBGridC1TrueDBDropDown的一个整体显示模板,然而为了定制单个SplitC1DisplayColumn对象的外观,请更改适合的Style 对象属性:

Property

Description

CaptionStyle

控制一个对象的标题样式。

EditorStyle

控制一个对象的编辑样式。

EvenRowStyle

控制偶数行的行样式。

FilterBarStyle

控制过滤栏中的列样式。

FooterStyle

控制一个对象的脚样式。

HeadingStyle

控制一个对象的头样式。

HighlightRowStyle

控制选取框的样式,当被设置为Highlight Row时。

InactiveStyle

控制一个对象的交互头样式。

OddRowStyle

控制奇数行的行样式。

RecordSelectorStyle

控制一个对象的记录选择器样式。

SelectedStyle

控制一个对象中所选择的行/列的样式。

Style

控制一个对象的常规样式。

...

 直接更改一个样式属性

定制一个网格控件的外观可以修改适当样式属性的一个或多个成员,例如,为了设置网格的标题文本加粗,需要更
Font 对象的关联属性CaptionStyle ,在设计时可以通过扩展位于属性窗口的CaptionStyle 树节点,Font 节点以及设置Bold属性为True,当您点击这个特殊的属性时,这些更改会应用于网格。
注意到当切换到C1TrueDBGrid 样式编辑器样式编辑器时,可以看到内置的Caption样式没有改变。
这就意味着以下声明并不不等效:
To write code in Visual Basic

...

第一个声明指定了网格标题栏的字体,因为这不是一个根样式,所以命名标题样式也会改变。

...

 命名样式vs.匿名样式

当再设计时设置了样式的属性,这对理解命名样式与匿名样式的区别至关重要。
命名样式提供了模板用以管理网格,拆分以及它们的列的外观,再设计过程中,可以使用GridStyleCollection Editor创建,更改和删除命名样式,在运行时,GridStyleCollection 被用来表示命名Style对象的相同集合。
匿名样式不是GridStyleCollection的成员,然而匿名样式的提出可以使单个拆分或列可以轻松直接的定制,而不需要定义一个单独的命名样式。
以下类比可以帮助澄清命名与匿名样式之间的区别,一个Microsoft Word 文档由几个基于默认常规段落样式组成,假设一个段落需要缩进和斜体显示为一个引文,如果文档是工作的一部分,它包含几个引文,为目标定义一个特殊样式并应用它到所有引文的段落,如果文档过早的起草或它可能不能被更新,或者定义一个段落的样式,此时可以很方便的将缩进和协议应用于引文中。
在该类比中,直接指定段落的属性类似于设置了属性的成员,并返回了匿名样式,例如,在一个特殊网格列来垂直居中数据,更改在C1DisplayColumnCollection 编辑器编辑器中的列Style属性的成员VerticalAlignment

注意到更改一个匿名样式同更改一个命名样式相同,需要扩展属性树中的Style 对象节点,并选择且编辑它的一个或者多个成员属性。

...

 匿名样式继承

正如一个命名样式可以从其他的匿名样式中继承字体,颜色及格式化字符,Split对象中的匿名样式可以
C1TrueDBGrid 对应的部分继承。类似的,在C1DisplayColumn 对象中的匿名样式可以在Split对象的对应部分中继承,因为C1TrueDBDropDown 控件没有Splits集合,C1DisplayColumn 对象的匿名样式可以从控件自身中继承值。当一个网格先被创建,它的Style 属性将从内置的Normal样式中继承它的所有属性,用以控制所有数据单元格的外观,
Normal样式的任何改变将传递到所有拆分中,并返回每个拆分中列。然而,可以通过更改匿名Style属性成员来改变SplitC1DisplayColumn对象的数据单元格外观。
考虑以下网格布局,其使用包含两个相同拆分内置样式的默认值。

所有后续的示例都使用布局作为开始,为了澄清,示例使用代码阐述样式属性与网格显示之间的关系。然而您在设计时使用网格集合编辑器执行相同的操作。

10.2.3.1 示例1:从包含的拆分中继承

由于默认的内置样式值均有效,从包含的拆分中的继承列可以继承整个网格,因此该声明不仅会影响数据单元格,而且还有所有的标头,注脚以及标题栏,该声明有几个可见的影响,使用C1TrueDBGrid Style Editor直接改变Normal样式,然而内置的Normal样式没有被更改。

以下代码从包含的拆分中继承了值:
To write code in Visual Basic

...

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="aad3b00d-c95f-4dce-a07f-0dd405785158"><ac:plain-text-body><![CDATA[

Font myfont; myfont = new Font (this.c1TrueDBGrid1.Styles["Normal"].Font, FontStyle.Bold); this.c1TrueDBGrid1.Styles["Normal"].Font = myfont;

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

...

 示例2:仅影响第一个拆分的数据单元格

在本示例中,只影响第一个拆分的数据单元格,这是因为拆分标题,列头和列脚都从内置样式Caption, Heading和 Footing中分别继承字体。

以下代码仅影响第一个拆分的数据单元格:
To write code in Visual Basic

...

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="025badf6-dd91-4a21-bec2-4b6c2d0a1d46"><ac:plain-text-body><![CDATA[

Font myfont; myfont = new Font (this.c1TrueDBGrid1.Splits[0].Style.Font, FontStyle.Bold); this.c1TrueDBGrid1.Splits[0].Style.Font = myfont;

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

...

 示例3:仅在第一个拆分中影响所有元素

该示例将第一个的粗体在第一个拆分的所有元素中呈现,此外Style 属性对CaptionStyle, HeadingStyle, 及FooterStyle 属性的设置也是必要的。

以下代码将仅在第一个拆分中影响所有元素:
To write code in Visual Basic

Visual Basic

Dim myfont As Font
Dim myfont1 As Font
Dim myfont2 As Font
Dim myfont3 As Font
myfont = New Font (Me.C1TrueDBGrid1.Splits(0).Style.Font, FontStyle.Bold) Me.C1TrueDBGrid1.Splits(0).Style.Font = myfont

myfont1 = New Font (Me.C1TrueDBGrid1.Splits(0).CaptionStyle.Font, FontStyle.Bold) Me.C1TrueDBGrid1.Splits(0).CaptionStyle.Font = myfont1
myfont2 = New Font (Me.C1TrueDBGrid1.Splits(0).HeadingStyle.Font, FontStyle.Bold) Me.C1TrueDBGrid1.Splits(0).HeadingStyle.Font = myfont2
myfont3 = New Font (Me.C1TrueDBGrid1.Splits(0).FooterStyle.Font, FontStyle.Bold) Me.C1TrueDBGrid1.Splits(0).FooterStyle.Font = myfont3
To write code in C#

C#

Font myfont;
Font myfont1;
Font myfont2;
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="e66e31b3-e000-4991-9099-1cf4de047ff8"><ac:plain-text-body><![CDATA[Font myfont3; myfont = new Font (this.c1TrueDBGrid1.Splits[0].Style.Font, FontStyle.Bold); this.c1TrueDBGrid1.Splits[0].Style.Font = myfont; myfont1 = new Font (this.c1TrueDBGrid1.Splits[0].CaptionStyle.Font, FontStyle.Bold); this.c1TrueDBGrid1.Splits[0].CaptionStyle.Font = myfont1; myfont2 = new Font (this.c1TrueDBGrid1.Splits[0].HeadingStyle.Font, FontStyle.Bold); this.c1TrueDBGrid1.Splits[0].HeadingStyle.Font = myfont2; myfont3 = new Font (this.c1TrueDBGrid1.Splits[0].FooterStyle.Font, FontStyle.Bold); this.c1TrueDBGrid1.Splits[0].FooterStyle.Font = myfont3;

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

...

 示例4:仅影响第一个拆分的第一个列中的数据单元格

本示例中,只有第一个拆分的第一个列中的数据单元格被影响,这是因为列头和列脚从内置Heading和Footing样式分别继承了字体。

以下代码将仅影响第一个拆分的第一个列中的数据单元格:
To write code in Visual Basic

...

C#

Font myfont;
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="dc10de29-ec05-40bf-b58b-4b53b1d826d4"><ac:plain-text-body><![CDATA[myfont = new Font (this.c1TrueDBGrid1.Splits[0].DisplayColumns[0].Style.Font, FontStyle.Bold); this.c1TrueDBGrid1.Splits[0].DisplayColumns[0].Style.Font = myfont;

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

...

 示例5:仅在第一个拆分的第一列影响所有元素

本示例将第一个拆分的第一列中的所有元素设置为粗体,此外Style 属性对HeadingStyle, 及FooterStyle 属性的设置也是必要的。

以下代码仅在第一个拆分的第一列影响所有元素:
To write code in Visual Basic

...

C#

Font myfont;
Font myfont1;
Font myfont2;
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="324feb3a-8900-44a9-a9e1-0a445d939a44"><ac:plain-text-body><![CDATA[myfont = new Font (this.c1TrueDBGrid1.Splits[0].DisplayColumns[0].Style.Font, FontStyle.Bold); this.c1TrueDBGrid1.Splits[0].DisplayColumns[0].Style.Font = myfont;

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


Wiki Markup
 \\
myfont1 = new Font (this.c1TrueDBGrid1.Splits\[0\].DisplayColumns\[0\].HeadingStyle.Font, FontStyle.Bold); this.c1TrueDBGrid1.Splits\[0\].DisplayColumns\[0\].HeadingStyle.Font = myfont1;  
myfont2 = new Font (this.c1TrueDBGrid1.Splits\[0\].DisplayColumns\[0\].FooterStyle.Font, FontStyle.Bold);
this.c1TrueDBGrid1.Splits\[0\].DisplayColumns\[0\].FooterStyle.Font = myfont2;

...


 示例6:更改样式属性的背景色

在第一个示例中,可以通过设置网格的Style属性的Font 成员从而影响整个网格,包括每个标题栏,列头及列脚,然而同样是没有BackColorForeColor属性为真,由于内置的Caption, Heading和Footing 样式均覆盖可这些属性,仅有网格的数据单元格显示为浅紫色背景。

以下代码将更改Style属性的字体成员:
To write code in Visual Basic

...

C#

this.c1TrueDBGrid1.Style.BackColor = System.Drawing.Color.Lavender;

...

 示例7:更改第一个拆分的数据单元格

在本示例中,只有第一个拆分中的数据单元格被影响,这时因为拆分标题,列头与列脚分别从内置样式 Caption,
Heading, 及Footing继承背景颜色。

以下代码将值更改第一个拆分中的数据单元格:
To write code in Visual Basic

Visual Basic

Me.C1TrueDBGrid1.Splits(0).Style.BackColor = System.Drawing.Color.Lavender

...

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="4bdebefe-80a9-4818-8edd-e60c21d23ae9"><ac:plain-text-body><![CDATA[

this.c1TrueDBGrid1.Splits[0].Style.BackColor = System.Drawing.Color.Lavender;

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

...

 示例8:仅更改第一个拆分的第一列中的数据单元格

在本示例中,仅有第一个拆分中的第一列中的数据可以被影响,这时因为列头和列脚从内置样式Heading 和 Footing中分别继承它们的背景颜色。

以下代码会对第一个拆分中第一列数据单元格进行更改:
To write code in Visual Basic

...

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="93d96b45-ed62-4913-b8e1-ead0ce2f01e0"><ac:plain-text-body><![CDATA[

this.c1TrueDBGrid1.Splits[0].DisplayColumnsp[0].Style.BackColor =
]]></ac:plain-text-body></ac:structured-macro>
System.Drawing.Color.Lavender;

...

 示例9:设置C1DisplayColumn对象的对齐

C1DisplayColumn 对象的HorizontalAlignment 属性设置不仅可以影响数据单元格,而且可以影响它的列头和列脚,
其原因在于内置样式Heading和Footing的HorizontalAlignment 属性的默认设置从Normal样式中继承并设置为
AlignHorzEnum.General,对于数据单元格,一般的设置意味着潜在的数据类型决定是否单元格文档左对齐,居中对齐或者右对齐,对于列头与列脚,一般的设置意味着列数据单元对齐将会如下。

以下代码设置了C1DisplayColumn 对象的对齐:
To write code in Visual Basic

...

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="89ff42f7-4cc7-4a80-81e1-6f73cbcdbf5e"><ac:plain-text-body><![CDATA[

this.c1TrueDBGrid1.Splits[0].DisplayColumns[0].Style.HorizontalAlignment =
]]></ac:plain-text-body></ac:structured-macro>
C1.Win.C1TrueDBGrid.AlignHorzEnum.Center;

...

 示例10:设置列标题的对齐

本示例阐述了列头和列脚的普通与特定对齐之间的区别,如果HeadingStyle (或FooterStyle) 属性的HorizontalAlignment 属性成员未被设置为AlignHorzEnum.General,此时头(或脚) 会根据数据单元格独立对齐。

以下代码设置了列头的对齐:
To write code in Visual Basic

...

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="722a8c44-6585-4a79-b379-b7e35caff569"><ac:plain-text-body><![CDATA[

this.c1TrueDBGrid1.Splits[0].DisplayColumns[0].HeadingStyle.HorizontalAlignment = C1.Win.C1TrueDBGrid.AlignHorzEnum.Near;
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="b1f704c4-5020-4ab8-8309-14e52dad35bd"><ac:plain-text-body><![CDATA[this.c1TrueDBGrid1.Splits[0].DisplayColumns[0].FooterStyle.HorizontalAlignment = C1.Win.C1TrueDBGrid.AlignHorzEnum.Far;
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="517cebc7-9665-4ded-9df1-3e5bf33951ef"><ac:plain-text-body><![CDATA[this.c1TrueDBGrid1.Splits[0].DisplayColumns[0].Style.HorizontalAlignment =
]]></ac:plain-text-body></ac:structured-macro>
C1.Win.C1TrueDBGrid.AlignHorzEnum.Center;

...

 对单元格应用样式

WinForms版版True DBGrid 提供了三种方法控制单元格中字符的显示:

...

在设计时使用Style 对象定义作为AddCellStyleAddRegexCellStyle方法的参数,或者在代码中创建一个临时的样式以及使用它制定一个或多个属性。
FetchCellStyleFetchRowStyle 事件可以传递一个临时的Style 对象作为最终参数,通过设置它的属性,控制其他事件参数指定单元格的外观。
WinForms版版True DBGrid 中,每个单元格中的字体与颜色只能通过写代码来实现,然而在设计时创建样式,该代码可以保持最小。为了学习如何在设计时创建命名样式,请参阅使用使用C1TrueDBGrid样式编辑器样式编辑器 (Section 6.5)

...

 指定单元格状态值

C1TrueDBGrid 能够识别16个不同的单元格状态值,用于识别一个单元格的性质,一个单元格状态值是四个单独条件的组合,这些条件是有标签属性的枚举,这意味着它们可以使用Or运算符连接:

...

使用CellStyleFlag.AllCells 来引用所有的单元格而不用考虑状态,使用CellStyleFlag.NormalCell 来引用那些单元格而不用之前描述四个基本单元格条件。

...

 按状态应用单元格样式

WinForms版版True DBGrid 中每一个单元格可以显示一个状态值,可以识别它的性质(当前的连接,一个选择行的部分,或一个高亮行的部分)。使用AddCellStyle 方法设置样式属性用于可能的单元格状态值的任意连
接,AddCellStyle 方法在C1TrueDBGrid, C1TrueDBDropDown, Split, 与C1DisplayColumn 对象中支持,单元格的范围可以被确定的条件控制。
对于每个唯一状态连接,您可以设置颜色,字体和图像属性用于单元格的状态,当一个单元格状态改变时,WinForms 版版True DBGrid将会检查是否样式属性覆盖会定义单元格,并在显示时应用这些属性到单元格,Style 对象被用于指定一个单元格的颜色和字体,如下示例:
To write code in Visual Basic

...

这里,一个新的临时样式对象被创建来指定颜色和字体的覆盖(红色文本,加粗)将被应用于当前整个网格的单元格,因此样式对象的BackColor 属性未被明确设置,当前单元格的背景色没有改变。

设计时也会使用样式定义作为AddCellStyle 方法的参数:
To write code in Visual Basic

Visual Basic

Dim S As C1.Win.C1TrueDBGrid.Style
S = Me.C1TrueDBGrid1.Styles("RedBold")
Me.C1TrueDBGrid1.AddCellStyle(C1.Win.C1TrueDBGrid.CellStyleFlag.CurrentCell, S)

...

C#

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="5351273f-46a7-4b07-b32b-58389947c207"><ac:plain-text-body><![CDATA[

this.c1TrueDBGrid1.AddCellStyle(C1.Win.C1TrueDBGrid.CellStyleFlag.CurrentCell

C1.Win.C1TrueDBGrid.CellStyleFlag.UpdatedCell, this.c1TrueDBGrid1.Styles["RedBold"]);

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

Image Removed Image Added 注意注意: 当前单元格状态当MarqueeStyle 属性没有设置为MarqueeEnum.FloatingEditor时才会实现,浮动编辑器选取框总是使用由控制面板设置的系统高亮颜色。

虽然指定单元格条件的方法提供了更多的控制和灵活性,但它也需要写额外的代码应对某些常见的情况。调用AddCellStyle 即可立即起效,它可以用于交互效果并适用于整个网格特征。

...

 按内容应用单元格样式

WinForms版版True DBGrid 能够自动应用颜色和字体到特定的单元格,基于它显示的内容,为了实现这种效果以提供一
个模式,即常规表达式,用以测试每一个单元格中显示的值,使用AddRegexCellStyle 方法关联带有样式属性的常规表达式,此时应用到可能的单元格状态值连接,AddRegexCellStyle 方法由C1TrueDBGrid, C1TrueDBDropDown, 及C1DisplayColumn 对象提供,允许确定条件的单元格领域可以被控制。
AddRegexCellStyle 方法类似于AddCellStyle 方法,但它需要一个额外常规表达式字串的参数,由于使
AddCellStyle,您可以使用临时样式或者命名样式,以下示例可以使用一个临时样式显示第一列中的所有单元格,其包含粗体的字串"Windows":
To write code in Visual Basic

...

该特性允许实现"visual queries"用以区别单元格字体或颜色属性以匹配一个确定的模式。

...

 按自定义准则应用单元格样式

常规表达式式用于格式化表达的需求可能是不足的,使用FetchCellStyle 事件自定义每一个基本单元格的字体和颜色,该事件仅可以触发FetchStyle 属性被设置为True的列。
例如,可以在确定领域中提供值的颜色代码,以下代码假设一个单独的数字数据列的FetchStyle 属性为True ,并控制FetchCellStyle 事件用蓝色显示超过1000的值:
To write code in Visual Basic

...

CellStyle.Font = myfont; } break; default: Console.WriteLine ("FetchCellStyle not handled: " + e.Col);
}
}
出于更有效的因素,可以只设置列的FetchStyle属性为True,因而您可以在FetchCellStyle事件中处理。

Image Removed Image Added 注意注意: 之前的示例中使用CellText 方法用于简化,然而,CellTextCellValue 方法每次被调用可以创建和删除一个内部的数据集的副本,但调用它们缺乏效率而不能在FetchCellStyle事件中使用,为了改善网格的显示周期的性能,非绑定应用可以直接访问基础数据源,通常会比调用CellTextCellValue方法更快。

...

虽然FetchRowStyle 事件可以用于实现间隔行颜色方案,一个更容易且更有效的方法是使用AlternatingRows属性完成相同的任务,可以同时使用内置的EvenRow 样式和 OddRow 样式。
10.3.5 单元格样式评估顺序

...

 应用图片到网格元素中

WinForms版版True DBGrid 的早前版本中,样式可以用于指定字体,颜色和对齐属性,本版本可以扩展样式概念至背景与前景图片,用以修饰于列头,列脚以及标题栏,指定数据单元格的背景模式,并且可以在不用填充ValueItems 对象的情况下在单元格中呈现图片数据,Style对象的以下属性决定了图片将如何显示:

...

因此图片属性会遵循其他样式属性的相同继承规则,在本章中早前描述的技术可以使用图片,这意味着图片可以通过以下方法添加到一个网格元素中:
在设计器或代码中设置内置命名样式的BackgroundImageForegroundImage属性。在设计器或代码中设置匿名样式的BackgroundImageForegroundImage 属性。调用AddCellStyleAddRegexCellStyle 方法。为FetchCellStyleFetchRowStyle 事件写一个处理程序。

...

 显示背景图片

使用背景图片来自定义网格元素,如标题栏,列头,列脚。例如以下代码将一个彩色的渐变位图用于被网
CaptionStyle 属性返回的Style 对象的BackgroundImage 成员:
To write code in Visual Basic

...

Visual Basic

' 给出网格的一个平面外观并记录选择,行分隔和滚动条移除。
With Me.C1TrueDBGrid1
.InactiveStyle.ForeColor = System.Drawing.Color.White
.RecordSelectors = False
.RowDivider.Style = LineStyleEnum.None
.RowHeight = 16
.HScrollBar.Style = ScrollBarStyleEnum.None
.VScrolBar.Style = ScrollBarStyleEnum.None
.MarqueeStyle = MarqueeEnum.NoMarquee
End With

' 设置背景模式用于默认的数据单元格(不会打断Normal样式)。
With Me.C1TrueDBGrid1.Splits(0).Style
.BackgroundImage = System.Drawing.Image.FromFile("paper.bmp") .BackgroundPictureDrawMode = BackgroundPictureDrawModeEnum.Tile
End With

' 在左侧创建一个空的非绑定列用以装载订书环,移除它的分隔线并设置它Style对象的BackroundBitmap属性。
Dim col as New C1TrueDBGrid.C1DataColumn()
Me.C1TrueDBGrid.Columns.InsertAt(0, col) Dim C As C1TrueDBGrid.C1DisplayColumn
C = Me.C1TrueDBGrid1.Splits(0).DisplayColumns(col)
With C
.Width = 48
.Visible = True
.Style.BackgroundImage = System.Drawing.Image.FromFile("rings.bmp")
.HeaderDivider = False
.ColumnDivider.Style = LineStyleEnum.None
End With

' 滚动被绑定列到视图中。
Me.C1TrueDBGrid1.Col = 0

' 重新制定Title列的大小并移除它的头分隔线。
Set C = Me.C1TrueDBGrid1.Splits(0).DisplayColumns("Title")
With C
.Width = 380
.HeaderDivider = False
End With

' 使用订书环位图的一个小角作为列标题的一个背景,并调整相应的字体与文本颜色。
Dim myfont As Font
With Me.C1TrueDBGrid1.HeadingStyle
.BackgroundImage = System.Drawing.Image.FromFile("corner.bmp") .BackgroundPictureDrawMode = BackgroundPictureDrawModeEnum.Tile myfont = New Font(.Font, 10, FontStyle.Bold) .Font = myfont
.ForeColor = System.Drawing.Color.White
End With

...

C#

// 给出网格的一个平面外观并记录选择,行分隔和滚动条移除。
this.c1TrueDBGrid1.InactiveStyle.ForeColor = System.Drawing.Color.White; this.c1TrueDBGrid1.RecordSelectors = false; this.c1TrueDBGrid1.RowDivider.Style = LineStyleEnum.None; this.c1TrueDBGrid1.RowHeight = 16; this.c1TrueDBGrid1.HScrollBar.Style = ScrollBarStyleEnum.None; this.c1TrueDBGrid1.VScrolBar.Style = ScrollBarStyleEnum.None; this.c1TrueDBGrid1.MarqueeStyle = MarqueeEnum.NoMarquee;

// 设置背景模式用于默认的数据单元格(不会打断Normal样式)。

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="da8e66b5-2957-4533-8993-7632ac69fb47"><ac:plain-text-body><![CDATA[

this.c1TrueDBGrid1.Splits[0].Style.BackgroundImage = System.Drawing.Image.FromFile("paper.bmp");
]]></ac:plain-text-body></ac:structured-macro>
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="94e7872e-1bee-4335-b30c-5f155028da10"><ac:plain-text-body><![CDATA[this.c1TrueDBGrid1.Splits[0].Style.BackgroundPictureDrawMode =
]]></ac:plain-text-body></ac:structured-macro>
BackgroundPictureDrawModeEnum.Tile;

// 在左侧创建一个空的非绑定列用以装载订书环,移除它的分隔线并设置它Style对象的BackroundBitmap属性。
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="0c5090a7-428f-4a2f-8faa-90d80ea21c14"><ac:plain-text-body><![CDATA[C1TrueDBGrid.C1DataColumn col = new C1TrueDBGrid.C1DataColumn(); this.C1TrueDBGrid.Columns.InsertAt(0, col); C1TrueDBGrid.C1DisplayColumn C = this.c1TrueDBGrid1.Splits[0].DisplayColumns[col];
]]></ac:plain-text-body></ac:structured-macro>
C.Width = 48;
C.Visible = true;
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="1920f423-01b7-4ea9-9c41-bf46bc124919"><ac:plain-text-body><![CDATA[C.Style.BackgroundImage = System.Drawing.Image.FromFile["rings.bmp"];
]]></ac:plain-text-body></ac:structured-macro>
C.HeaderDivider = false;
C.ColumnDivider.Style = LineStyleEnum.None;

// 滚动被绑定列到视图中。
this.c1TrueDBGrid1.Col = 0;

// 重新制定Title列的大小并移除它的头分隔线。
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="c70613c8-82a7-4157-be78-b6f492b32eed"><ac:plain-text-body><![CDATA[C = this.c1TrueDBGrid1.Splits[0].DisplayColumns["Title"];
]]></ac:plain-text-body></ac:structured-macro>
C.Width = 380;
C.HeaderDivider = false;

// 使用订书环位图的一个小角作为列标题的一个背景,并调整相应的字体与文本颜色。
Font myfont;
this.c1TrueDBGrid1.HeadingStyle.BackgroundImage = System.Drawing.Image.FromFile("corner.bmp");
this.c1TrueDBGrid1.HeadingStyle.BackgroundPictureDrawMode = BackgroundPictureDrawModeEnum.Tile; myfont = new Font(.Font, 10, FontStyle.Bold); this.c1TrueDBGrid1.HeadingStyle.Font = myfont; this.c1TrueDBGrid1.HeadingStyle.ForeColor = System.Drawing.Color.White;

...

 显示前景图片

使用前景图片对静态网格元素提供可视化提示,如标题栏,列头以及列脚。前景图片由StyleForegroundImage 属性指定,前景图可以显示在除文本以外的地方,或者代替文本显示,但不可以覆盖文本显示。
前景图片有ForeGroundPicturePosition 属性,用以指定前景图片在单元文本中的相对位置,值与呈现如下图所示:
PositionDisplayNear Far

LeftOfText

RightOfText

TopOfText

BottomOfText

PictureOnly

TextOnly

Image Removed Image Added