TeeChart Pro .NET使用教程(2022):如何让自定义序列化(上)

此次报表开发工具TeeChart Pro .NET使用教程将为大家带来如何让自定义序列化。

介绍

TeeChart 自动处理所有必要的序列化步骤以允许保存和调用 TeeChart。这包括图表及其系列的所有修改元素。

自定义序列化

您可以决TeeChart系列提供您需要的大部分功能,但您希望修改它以包含您自己的附加信息,以便系列发布或采取行动或提供对您的其他部分的参考使用该系列时的应用程序。为此,您可能希望创建自己的 SeriesType,从 TeeChart Series 派生,添加您自己的自定义元素。 TeeChart 的自定义序列化允许保存(序列化)和恢复这些元素。

请注意:自定义元素的保存分为两种技术:

  • 已知类型的序列化(例如字符串、整数、双精度)
  • 自定义(未知)类型的序列化
序列化自定义系列

让我们假设您希望从 TeeChart 的 Line Series 派生一个 Series。 Line 系列包含您需要的功能,但您希望添加一些元素用于跟踪目的或作为与任何特定数据集关联的增值对象。

以下是如何定义从线系列派生的自定义系列的示例:

public class MyLine : Steema.TeeChart.Styles.Line{  public MyLine(Chart c) : base(c)  {    myStrVar = "default";  }  public MyLine() : this((Chart)null) { }  private string myStrVar = "";  private int myIntVar = 0;  public string MyStrProp  {    get { return myStrVar; }    set { myStrVar = value; }  }  public int MyIntProp  {    get { return myIntVar; }    set { myIntVar = value; }  }}
保存和导入

您可以填充自定义变量并保存图表,当重新导入保存的图表时,它们将导入。 只要变量是已知的系统类型(例如字符串、整数、双精度),就不需要额外的步骤。 TeeChart 将处理序列化和反序列化。

private void button1_Click(object sender, EventArgs e){  MyLine mLine=new MyLine();  mLine.MyStrProp = "now set";  mLine.MyIntProp = 43;  tChart1.Series.Add(mLine);  mLine.FillSampleValues();  tChart1.Export.Template.Save(@"c:filescustomLine.ten");}

导入带有修改系列的图表

private void button2_Click(object sender, EventArgs e){  tChart1.Clear();  tChart1.Import.Template.Load(@"c:filescustomLine.ten");  label1.Text = ((MyLine)(tChart1[0])).MyStrProp;  label2.Text = ((MyLine)(tChart1[0])).MyIntProp.ToString();}

Label1 和 Label2 将显示保存图表之前设置的值。

使用自定义对象定义自定义系列

以下是从 Line Series 派生的 Series 示例,其中包括已知和未知类型 (MyObj) 的新元素。 由于 TeeChart 不知道如何序列化和反序列化未知类型,我们需要提供一种机制,您可以在其中编写例程来执行此操作并在序列化/反序列化时调用它。 该机制是通过从 Steema.TeeChart.Export.TemplateExport.ICustomSerialization 接口继承类来提供的。 这要求您向您的类添加 2 个方法:

  • 公共无效序列化(序列化信息信息)
  • public void DeSerialize(SerializationInfo 信息)
using Steema.TeeChart.Export;// Custom Line classpublic class MyLine : Steema.TeeChart.Styles.Line, TemplateExport.ICustomSerialization{  public MyLine(Chart c) : base(c)  {    myStrVar = "default";  }  public MyLine() : this((Chart)null) { }  private string myStrVar = "";  private int myIntVar = 0;  private MyObj myMyObj;  public string MyStrProp  {    get { return myStrVar; }    set { myStrVar = value; }  }  public int MyIntProp  {    get { return myIntVar; }    set { myIntVar = value; }  }  ///   /// Method to ease population of the myMyObj variable.  ///   public void setMyObj(int i, string s)  {    myMyObj = new MyObj(i, s);  }  ///   /// Property of Custom type, MyObj  ///   public MyObj MyObj  {    get { return myMyObj; }    set { myMyObj = value; }  }  ///   /// Obligatory method (TemplateExport.ICustomSerialization interface)  ///   public void Serialize(SerializationInfo info)  {    //save custom elements     info.AddValue("myObjStr", myMyObj.MyString, myMyObj.MyString.GetType());    info.AddValue("myObjInt", myMyObj.MyInt);  }  ///   /// Obligatory method (TemplateExport.ICustomSerialization interface)  ///   public void DeSerialize(SerializationInfo info)  {    //recover custom elements into the myMyObj variable    myMyObj = new MyObj(info.GetInt32("myObjInt"), info.GetString("myObjStr"));  }}//custom objectpublic class MyObj{  private string myString;  private int myInt;  public MyObj(int i, string s)  {    myString = s;    myInt = i;  }  public int MyInt  {    get { return myInt; }    set { myInt = value; }  }  public string MyString  {    get { return myString; }    set { myString = value; }  }}

请注意,序列化使用“info.AddValue”来保存自定义元素的值。 反序列化根据您保存的变量类型使用“info.Getxxxx”。


如果您想了解TeeChart for .NET正版价格,欢迎咨询在线客服

TeeChart Pro .NET使用教程(2022):如何进行ADO 数据库访问
标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年3月10日
下一篇 2022年3月10日

相关推荐

发表回复

登录后才能评论