在单个文件中保存并打开多个DiagramControls

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在单个文件中保存并打开多个DiagramControls相关的知识,希望对你有一定的参考价值。

在我的应用程序中,我显示了两个图表控件,即一个用于前卡,一个用于后卡。现在添加任意数量的形状,线条和图像。我还添加了一个仪表板设计器表单以及数据源。我想将此图表控件,具有数据源属性和其他自定义属性(如具有原始数据类型和自定义数据类型的自定义类)的数据源属性的仪表板设计器保存在单个文件中作为模板,然后在打开该单个模板文件时,图控件,仪表板设计器和其他属性都将像以前一样加载所有形状,线条和图像。

答案

为了保存多个图表控件和连接属性,我创建了自己的类,该类具有保存这些信息的成员,例如

public class TemplateClass

    public string[] DiagramControlsXMLs;
    public string SqlDataSourceXML  get; set; 
    public string TemplateName  get; set;     
    ///add more other properties

然后在保存模板时,临时保存图控件并将其内容存储在TamplateClass字符串变量中,例如

//save it with temporary name
diagControlA.SaveDocument(strTempFileName);
string strXML = "";
if (File.Exists(strTempFileName))

    //read XML based diagram control file
    strXML = File.ReadAllText(strTempFileName);
    File.Delete(strTempFileName);


if (objTemplate.DiagramControlsXMLs == null)
    objTemplate.DiagramControlsXMLs = new string[0];

Array.Resize(ref objTemplate.DiagramControlsXMLs, objTemplate.DiagramControlsXMLs.Length + 1);
objTemplate.DiagramControlsXMLs[objTemplate.DiagramControlsXMLs.Length - 1] = strXML;

还保存连接属性,临时保存其对应的XML并加载到模板类变量中,如

XElement objXE = GM.objDataSources.objSqlDataSource.SaveToXml();
objXE.Save(strTempFileName);

if (File.Exists(strTempFileName))

    //store Sql Data source xml string
    objTemplate.SqlDataSourceXML = File.ReadAllText(strTempFileName);
    File.Delete(strTempFileName);

最后将模板类对象序列化为基于json的字符串,并通过名称和扩展名将其保存为文件,例如

DataContractJsonSerializer objJS = new DataContractJsonSerializer(typeof(TemplateClass));
MemoryStream objMS = new MemoryStream();
objJS.WriteObject(objMS, objTemplate);

string str = Encoding.Default.GetString(objMS.ToArray());
using (StreamWriter objSW = new StreamWriter(strTemplateFilePath, false))

    objSW.Write(str);
    objSW.Close();

现在打开此模板文件,应用相反的过程,以图的方式加载其控件,并以其属性连接参数。

以上是关于在单个文件中保存并打开多个DiagramControls的主要内容,如果未能解决你的问题,请参考以下文章

如何在 R 中迭代以同时保存多个文件并避免“absolute_path(target) 中的错误:'x' 必须是单个字符串”?

如何保存单个值并重新打开它们以供以后使用?

oracle sql (toad) - 执行多个查询,保存到单个 excel 文件

如何在一个文件中保存和检索多个 NSDictionaries

在单个 RDS 文件中保存多个变量

多个生产者,单个消费者