1

我创建了一个基于 HTML/JavaScript 的小型 Web 应用程序,它从 XML 文件中读取数据。

现在,我需要为这个 XML 文件创建一个离线 WinForms 编辑器。我完全意识到使用 XML 文件以我所做的方式存储数据远非理想,但要求是我只能为网站使用静态文件,尽管 XML 文件可以在使用时替换已更新。

迷你网络应用程序允许购买远程汽车启动器的客户选择其车辆的品牌、型号和年份,并显示安装所需的附加组件列表。此数据在 XML 中表示为一个<vehicle>元素,该元素具有代表品牌、型号、年份的属性以及每种组件类型的属性。

对编辑器的要求是:

  • 在网格中显示车辆记录
  • 允许根据已输入的值在每列中自动完成
  • 允许基于列的任意组合进行行过滤

我尝试了以下方法:

  • 使用 DataGridView 和数据绑定,但 databinding/datasets/etc 似乎不想轻松地将 XML 文件用作数据源。在与这个搏斗了几个小时后我放弃了
  • 创建我自己的自定义“行”控件并将每个元素的实例插入到面板控件中。由于有数百个车辆记录,因此出于性能原因,这不是首发。

我通常是一个网络人,所以这个 WinForms 东西对我来说是未知的领域。满足此编辑器要求的最简单方法是什么?

4

2 回答 2

1

与其创建一个包含大量较小的 UserControl 来表示每个元素的 UserControl,我认为最明智的方法是将用于可视化表示元素的逻辑封装为负责将其数据呈现​​到单个图形表面上的类(相反将逻辑封装在 UserControls 中)。

由于您已经创建了一个“行”控件(我认为具有编辑功能),您仍然可以通过创建它的实例并在用户单击它时将其“浮动”在您的控件上来使用它。

这个较早的回答有点类似的问题:

需要帮助创建控件以显示数据

显示基本原理。您可以使用这种方法来编辑非常大的 XML 文档,每次只实例化两个控件。

于 2009-09-27T01:28:46.157 回答
0

您可以考虑将 XML 文件读入内存并基于该 XML 文件创建类型化数据集。如果您可以控制 XML 文件的格式,则可以从一个类型化的数据集开始,将其序列化为 XML 以获得结构模板,然后从那时起以其他方式工作...编辑 XML 文件并通过以下方式加载数据集从 XML 文件反序列化。

本文讨论了类型化数据集和 DataGridView,还提供了如何过滤输入的很好的示例。

最后,您可能想看看免费的Krypton Toolkit。它们的控件通常比它们所替代的开箱即用的 Winform 控件更强大。我相信他们可能已经为 DataGridView 实现了自动完成(他们肯定为 TextBox 实现了)。如果您使用它,您实际上将下载他们的免费工具包和他们的商业工具。除非您打算购买他们的全部产品,否则请确保您只引用工具包 DLL。

于 2009-09-26T23:03:24.500 回答