1

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

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

所以现在我们有一个任务,如果有人想从父 machineclass.xml 和 machineobjects.xml 中以 xml 文件(.xml)的形式从 UI 中取回选定的对象

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

4

1 回答 1

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 分离,真的很简单

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

于 2012-04-12T02:51:08.330 回答