原創|行業資訊|編輯:凌霄漢|2022-04-13 15:28:28.290|閱讀 220 次
概述:此次報表開發工具TeeChart Pro .NET使用教程將為大家帶來如何讓自定義序列化。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
TeeChart Pro 將自動為您定義所有 Axis 標簽,并提供足夠的靈活性來定制您可能有的任何特定要求。 TeeChart Pro 提供真正的多軸。 這些在設計或運行時可用,并為 Axis 定義提供了無數的可能性和靈活性。
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:\files\customLine.ten");
}
導入帶有修改系列的圖表
private void button2_Click(object sender, EventArgs e)
{
tChart1.Clear();
tChart1.Import.Template.Load(@"c:\files\customLine.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 個方法:
using Steema.TeeChart.Export;
// Custom Line class
public 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 object
public 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正版價格,歡迎咨詢
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn