0

我有一个带有 3 个选项卡控件的表单,每个选项卡控件都有十几个文本字段。现在我有我所有的方法来修改 Form1.cs 中的文本字段,它正在工作,但是是一个非常长的类。我很好奇将调用表单控件的方法保留在该表单类中是否是正确的方法,或者您是否应该将它们划分为其他类?我读了这个帖子,我可能会感到困惑,但听起来选择的答案是说你不应该尝试从其他类访问表单控件? 如何从 C# 中的类访问表单方法和控件?

4

4 回答 4

2

在这种情况下,最好的封装方法是创建包含每个选项卡的文本字段的用户控件。然后,每个选项卡上只有一个用户控件,所有特定于这些字段的逻辑都封装在它自己的控件中。

于 2012-05-24T20:39:57.453 回答
1

如果您可以将访问 UI 数据的代码保留在 中Form,但将对该数据进行操作/执行计算的代码保留在另一个类中。通过这种方式,您将能够创建一个类或一组类,它们可用于(例如)UnitTesting。

于 2012-05-24T20:37:03.120 回答
0

这很容易完成,您只需将对表单的引用传递给另一个类,但随后它们变得紧密耦合,因此很脆弱。

更好的选择是定义一个接口并让表单实现它,但这可能会变得混乱。

其他选项是将选项卡上的控件移动到用户控件,甚至只是另一个表单,然后将它们托管在主表单的选项卡中。然后您可以隔离每个选项卡的数据和操作。再次定义和实现一两个接口将帮助您解耦。

这样想,你将 UI 分离到选项卡中,从 UI 的角度来看,这背后有一些底层逻辑,所以它遵循,在分离选项卡上的控件执行的功能方面应该有一些逻辑。我已经看到了例外情况,但这通常是因为选项卡中的分隔根本没有逻辑。

于 2012-05-24T20:43:19.297 回答
0

组织应用程序有不同的方法。将 GUI(表单)与其他应用程序逻辑分开通常是一件事情。只在表单中显示逻辑。为您的数据创建数据类(也称为模型)。您可能希望有Customer,Order等类Address。这些类包含“业务逻辑”,例如 Order 类知道如何计算税款,而不是订单。

通过使用数据绑定将业务对象绑定到表单,您可以节省大量精力。有关使用数据绑定的信息,请参阅我的 SO 答案。

通过使用 MVC 模式将逻辑分成三个部分,您可以走得更远。我不打算在这里详细解释它。正是这一点,MVC 代表模型视图控制器。Model 是业务类,View 是表单,Controller 是管理模型和表单,加载和存储模型等的类。

于 2012-05-24T20:49:32.433 回答