使用C1PrintDocument控件 > 样式 > 内联和非内联样式 |
C1PrintDocument中,存在着两种不同的样式,包括内联样式和非内联样式。如果一个对象具有Style属性,该属性指的是对象的内联样式,是该对象本身的一个组成部分。内联样式不能被删除或设置,这是一个只读属性,指的是和对象一起存在的样式的对象实例。因此,样式属性可以被认为是对象本身的属性。但是,由于存在继承关系,样式更加灵活并且可以高效地使用内存(比如,如果一个对象的Style属性没有被修改过,保持其默认值,则他们几乎不消耗内存,参照基类Style的属性值)。
此外,每个Style包含一组Style的集合,(称作Children属性,默认值为空),不直接关联到任何对象。相反,那些(非内联)方式可以用做父样式(参见样式的Parent和AmbientParent属性),以提供其他样式(当然也包括内联样式)属性的继承值。
不能直接创建一个样式对象,它要么是一个直接关联到一个render对象或者文档其他的元素的内联样式,或者是某一个样式Children集合中的一个成员。
所以,例如,以下代码不能通过编译:
Visual Basic
Visual Basic |
拷贝代码
|
---|---|
Dim doc As New C1PrintDocument() Style s = new Style() ' will not compile s.Borders.All = New LineDef("1mm", Color.Red) Dim rt As New RenderText("My text.") rt.Style = s |
C#
C# |
拷贝代码
|
---|---|
C1PrintDocument doc = new C1PrintDocument(); Style s = new Style(); // will not compile s.Borders.All = new LineDef("1mm", Color.Red); RenderText rt = new RenderText("My text."); rt.Style = s; |
而以下代码可以通过编译并达到预期的结果:
Visual Basic
Visual Basic |
拷贝代码
|
---|---|
Dim doc As New C1PrintDocument() Dim s As doc.Style.Children.Add() s.Borders.All = New LineDef("1mm", Color.Red) RenderText rt = New RenderText("My text.") rt.Style.Parent = s |
C#
C# |
拷贝代码
|
---|---|
C1PrintDocument doc = new C1PrintDocument(); Style s = doc.Style.Children.Add(); s.Borders.All = new LineDef("1mm", Color.Red); RenderText rt = new RenderText("My text."); rt.Style.Parent = s; |
关于环境和非环境样式属性以及Parent的更多信息,请参见 Ambient and Non-Ambient Style Properties.