WinForms - 自定义XML编辑器

时间:2009-09-26 22:47:51

标签: xml winforms xml-editor

我创建了一个基于HTML / JavaScript的小型迷你网页应用,可以从XML文件中读取数据。

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

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

编辑器的要求是:

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

我尝试了以下内容:

  • 使用DataGridView和数据绑定,但数据绑定/数据集/等似乎不希望轻松地将XML文件作为数据源。我摔跤几个小时后放弃了
  • 创建我自己的自定义“行”控件,并将每个元素的实例插入到Panel控件中。由于有数百个车辆记录,出于性能原因,这是一个非首发。

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

2 个答案:

答案 0 :(得分:1)

我认为最简单的方法是将视觉表示元素的逻辑封装为负责将数据渲染到单个图形表面的类,而不是创建包含大量较小UserControl的UserControl来表示每个元素。 (而不是在UserControls中封装逻辑)。

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

这是一个类似问题的早期答案:

Need help creating control to display data

显示了基本原理。您可以使用此方法编辑极大的XML文档,并且一次只能实例化两个控件。

答案 1 :(得分:0)

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

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

最后,您可能想要查看免费的Krypton Toolkit。它们的控制通常比它们取代的等效开箱即用的Winforms更强大。我相信他们可能已经为DataGridView实现了自动完成(他们确实为TextBox做了)。如果您使用它,您实际上将下载他们的免费工具包和他们的商业工具。除非您打算购买他们的完整产品,否则请确保仅引用工具包DLL。