如何序列化控件

我们有一个包含数据库作为xml文件的应用程序。 它有客户端服务器架构。 所以这里服务器将使用数据集从xml文件中读取数据并将其存储在xml模式中。 然后,服务器将序列化数据并将其传递给UI(客户端)。使用左侧的Treeview,右上角的listview和右下角的propertygrid显示UI数据。

Ui中的数据分类为类和对象。 所以现在我们的数据库中有一个xml文件machinesclass.xml和machineobjects.xml。 machinesclass.xml包含各种类,如电子类,计算机类,农业工具类等,machineobjects.xml包含电视,奔腾4计算机,Tractror等。所以现在在UI中,如果我从树视图中选择电子节点,它将列出电视,广播,电话等通过使用Listview将它包含在右上方的对象中,如果我选择对象“TV”,则在右下角的propertygrid中显示与TV相关的属性。

所以现在我们有一个任务,如果有人想要从xml文件(.xml),从父机器类例和机器对象.xml中取回UI中的选定对象

例如,如果有人从UI列表视图中选择电视并希望以.xml文件(tv.xml)的forms进行备份,那么在某些时候他可以导入数据,我们可以在这里实现什么逻辑? 我可以序列化listview和propertygrid,还是有任何选项可以做到这一点? 这是我在UI中用于复制粘贴操作的一些代码

我可以序列化listview和propertygrid,还是有任何选项可以做到这一点?

以下是序列化ListView的方法:
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