即时构建表格会起作用。我经常使用这种技术,但对我来说这似乎是一种黑客行为。我只使用它是因为很多时候,业务需求需要“足够好”和快速周转,而不是“漂亮”。
我将倾向于我将要建议的内容,即我自己对 3rd 方组件有强烈的偏见。
在大多数情况下,我完全拒绝使用它们,并且会不遗余力地提出另一种解决方案,因为我经常被升级/许可所困扰。
那就是说...
幸运的是,对于 .NET,并非所有第 3 方组件都需要安装到您的客户端 PC 上。使用 XCOPY 部署,您通常可以只引用解决方案中的 .DLL 或项目,并指定“始终复制”或“如果较新则复制”选项以仅包含 dll(或如果您引用类库项目,则为生成的 dll ) 并且只要 .dll 与可执行文件位于同一目录中,第 3 方组件就可以工作。
考虑到所有这些,我使用了一个项目来从CodeProject的 Windows 窗体打印 DataGridView 。这是一个您可以获取源代码、引用它并使用它的工具,而无需在客户端实际安装任何东西。我在不止一个应用程序中使用过它,它是我最喜欢的工具之一。
它只会打印 DataGridView,但它会完全按照屏幕上显示的方式打印它,所以如果这是你想要的,我建议至少检查一下。
作为第三种选择,您可以考虑使用 ASP.NET。如果您要生成 HTML,使用 ASP.NET 与在 WinForms 应用程序中一样容易(实际上更容易)。使用 ASP.NET,您可以获得Repeaters、ListViews 等,所有这些都使报表易于创建。
我有不止一个实际应用程序,主要是 WinForms 应用程序,但有一个相关的报告站点。
例如,我有一个 WinForms 应用程序,用于扫描我们零售店接受的优惠券。这是一个 WInForms 应用程序,因为我需要直接与 COM 端口上的扫描仪交互。但是,对于报告部分,我建立了一个 ASP.NET 网站。在 WinForms 应用程序中,创建报告菜单选项并指向页面非常简单。我们的用户通常甚至不会想到这是两个不同的应用程序。他们将其视为一个 - 他们的优惠券扫描应用程序。
所有这一切的重点是,通常可以使用任何给定的工具来做事,但使用适合这项工作的工具要容易得多。如果您要生成 HTML 报告,ASP.NET 是比手动构建报告更好的工具,如果您需要为大部分 UI 使用 WinForms 应用程序,您仍然可以这样做并使用该网站进行报告 - 为每项任务使用最佳工具。