如何序列化控件

本文关键字:控件 序列化 | 更新日期: 2023-09-27 18:30:53

我们有一个包含数据库作为xml文件的应用程序。它具有客户端服务器体系结构。因此,这里的服务器将使用数据集从xml文件中读取数据并将其存储在xml模式中。然后服务器将序列化数据并将其传递给UI(客户端)。因此,UI 数据是通过在左侧使用树视图、在右上角使用列表视图和在右下角使用属性网格来显示的。

UI 中的数据分为类和对象。所以现在我们在数据库中有一个 xml 文件 machinesclass.xml 和 machineobjects.xml。机器类.xml包含各种类,如电子类,计算机类,农业工具类等和机器对象.xml包含电视,奔腾4计算机,牵引车等。所以现在在UI中,如果我从树视图中选择电子节点,它将通过使用Listview列出电视,收音机,电话等右上角包含的任何对象,如果我选择对象"电视"电视相关属性显示在右下角的属性网格中。

所以现在我们有一个任务,如果有人想从 UI 中以 xml 文件(.xml)、父机器类和机器对象的形式备份选定的对象.xml.xml

例如,如果有人从UI listview中选择电视,并希望根据.xml文件(tv.xml)进行备份,以便在一段时间后他可以导入数据,我们可以在这里实现什么逻辑?我可以序列化列表视图和属性网格吗,或者是否有任何选项可以执行此操作?这是我用于UI中复制粘贴操作的一些代码

如何序列化控件

我可以序列化列表视图和属性网格吗,或者是否有任何选项 这样做吗?

下面介绍如何序列化列表视图:
http://www.codeproject.com/Articles/3335/Persist-ListView-settings-with-serialization

下面介绍如何序列化 PropertyGrid:
http://www.codeproject.com/Articles/27326/Load-and-Save-Data-Using-PropertyGrid

我的建议是正确地执行此操作,我认为正确的解决方案是序列化 ListView 和 PropertyGrid 也绑定的业务对象。将业务逻辑与 GUI 分离,那么它真的很容易

编辑(OP编辑问题以显示代码后):

将数据保存到 XML 文件:

System.Runtime.Serialization.Formatters.Binary.BinaryFormatter BinFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
System.IO.FileStream FS = new System.IO.FileStream("C:''tv.xml", IO.FileMode.Create);
BinFormatter.Serialize(FS, new ArrayList(listview1.Items));
FS.Close();

要从 XML 文件读取数据,请执行以下操作:

System.Runtime.Serialization.Formatters.Binary.BinaryFormatter BinFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
string fname;
System.IO.FileStream FS = new System.IO.FileStream("C:''tv.xml", IO.FileMode.Open);
listview1.Items.AddRange(BinFormatter.Deserialize(FS).ToArray(typeof(ListViewItem)));
FS.Close();

以下是使用 PropertyGrid 执行此操作的方法:PropertyGrid.Serialize