如何序列化控件

时间:2012-04-12 01:45:21

标签: c# visual-studio-2010 listview treeview propertygrid

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

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

所以现在我们有一项任务,如果有人想要从xml文件(.xml)中取消UI中的选定对象,从parent machinesclass.xml和machineobjects.xml

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

1 个答案:

答案 0 :(得分:1)

  

我可以序列化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分开,然后真正 easy

编辑(在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