【问题标题】:Design of a C# Windows Form AppC# Windows 窗体应用程序的设计
【发布时间】:2009-03-03 02:56:53
【问题描述】:

我有一个 c# windows 窗体应用程序,我们在其中为客户端做了一个快速原型。我的 c# 经验范围是 ASP.NET/C#,因此在软件的实际结构方面它有点不同。时间是这个项目的一个因素,因为它是一个学校项目,我们还有不到 2 个月的时间要做。

该软件将主要由数据库驱动。

当前项目设计

目前有 1 个主窗口窗体和一堆类文件。

我们的一个想法是,由于程序的大部分实际代码将在类中,我们是否应该将窗口窗体拆分成一堆带有一个主驱动程序的小窗口窗体?还是将其保留为一个较大的表单并尝试在主 win 表单中包含尽可能少的代码?

您对设计一个 c# 数据库驱动的窗体应用程序有什么建议?

请各分优劣。

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    我个人更喜欢 MDI(多文档界面)而不是单个表单,因为如果没有仔细规划,单个表单可能会变得杂乱无章。大多数客户也喜欢用于数据库驱动应用程序的 MDI 的想法,因为它让他们想起了 Microsoft Access。我也喜欢把所有东西都分成类的想法。我用来决定天气或不上课的经验法则是“我在我的编程生涯中是否需要再次做 X ?”。在这种情况下,X 是您将放在该类中的内容(例如,确定闰年)。如果您认为您的表格不会变得混乱,那么完全选择单一表格。希望这可以帮助您做出决定。

    【讨论】:

    • 如果您查看 Microsoft 软件趋势,您会发现 MDI 即将淘汰。不是说微软软件规则,只是这些天似乎越来越少用了......
    • @cruizer:几乎所有软件(苹果、Linux 等)都是如此,但对于数据库应用程序,MDI 是可行的方法。看看 Access 2007,即使它有功能区和其他东西,他们仍然使用 MDI。
    【解决方案2】:

    虽然我同意您几乎肯定需要不止一种形式,但我一点也不喜欢 MDI。相反,我更愿意考虑用户将执行的常见任务,并围绕用户预期的工作流程设计应用程序,这样就可以自然地从一个部分到另一个部分。当然,这也意味着为高级用户提供一种方法,让他们在他们真正想要的时候超越这个预期的流量。

    【讨论】:

      【解决方案3】:

      提供“厨房水槽”功能的单体形式与提供“厨房水槽”功能的单体类一样糟糕。

      因为这是一个学校项目,我假设你还在学习这些东西。

      将应用程序分解为执行较少的较小形式。每个表格都应该做一件事并且做得非常好。它的功能应该是明确定义的、有凝聚力的,并且尽可能地松散耦合。尽量将数据库代码排除在外(将该代码移到您的类中,然后从表单中调用它们)。

      表单只不过是一种显示类返回的信息的方式(换句话说,就是数据视图)。保持这样简单,您会发现添加新表单、更改现有表单以及在需要时扩展您的应用程序会更容易。

      【讨论】: