DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅、美观且易于使用的应用程序。想要体验击下载>>
“Brick”实现
一般概念
VisualBrick是用于显示数据的基本元素,VisualBrick元素由一个数据模型 (the brick)及其表示形式(the exporter)组成。
若要创建一个”brick”,请重写CreateBrick(VisualBrick[] childrenBricks)方法并返回”brick”实例。PutStateToBrick(VisualBrick brick, PrintingSystemBase ps)方法将控件属性映射到”brick”数据,请查看以下文件中的代码以获取更多信息:XRSwissQRBill.cs。
基本类的选择
Swiss QR Control布局是一个中间带有文本元素和条形码的区域,基本类的主要选择是面板、表格和文本”brick”。panel “brick”可以通过其简单的结果将组件布置在内部,因此SwissQRBillBrick基于PanelBrick类,exporter则基于PanelBrickExporter类。
实现Service Brick
该规范指出,付款部分可能包含标有角的空白区域。为了满足此要求,我们创建了一个额外的CornerRectangleBrick和其exporter – CornerRectangleBrickExporter – 它负责绘制角,”brick” 包括BrickType属性 – 可以重写该属性以实现正确的反序列化。
布局实现
选择PanelBrick作为基本类,您可以使用Bricks属性访问其内部的”bricks”,相对于面板本身的坐标 – 相对于点(0,0)设置内部“brick”坐标。
将组件分为收货和付款部分区域。
渲染功能返回其他”bricks” (或 “brick” 组合),这些 “brick” 随后添加到Bricks集合中。
- CreateReceiptPart()
- CreatePaymentPart()
现在,我们必须渲染子区域。
- CreateReceiptTitle()
- CreateReceiptInformation()
- CreateReceiptAmount()
- CreateReceiptAcceptancePoint()
- CreatePaymentTitle()
- CreatePaymentSwissQRCode()
- CreatePaymentAmount()
- CreatePaymentInformation()
- CreatePaymentFurtherInformation()
请查看以下文件中的代码以获取更多信息:SwissQRBillBrick.cs.
Exporter实现
序列化
一般概念
控件和”brick”都需要序列化,”brick”仅使用xml序列化,并且控件实现xml序列化并支持CodeDom序列化 – 这对于Visual Studio Designer是必需的。
控件序列化
XtraSerializableProperty属性负责序列化xml中的属性,仅指定属性来序列化返回简单类型的属性,复杂类型需要具有XtraSerializationVisibility参数类型的构造函数(最常用的值是Hidden,Collection,Reference,Content)。
DesignerSerializationVisibility属性负责Visual Studio Designer中的CodeDOM序列化,它只有相关枚举的三个变体 – 隐藏、可见和内容,使用可见属性值标记集合或引用,DefaultValue属性确定属性值是否包含在序列化中。
Brick序列化
仅XML序列化是必需的,为了正确进行反序列化,请将 “brick’s” 文本类型(在Brick级别上覆盖的BrickType属性)映射为真实类型。BrickFactory.BrickResolve方法用于映射,为实现BrickResolve方法请查看以下文件中的代码:CustomControl.cs
组件使用
要在Visual Studio Designer中使用组件,请将其添加到Visual Studio Toolbox中。
要在最终用户设计器中使用该组件,请使用传递的XRDesignMdiController作为参数来调用AddSwissQRControlToToolBox方法。 请查看以下文件中的代码以获取更多信息:CustomControlToolBoxRegistrator.cs
DevExpress技术交流群2:775869749 欢迎一起进群讨论

标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!