C# 将表单的方法保留在表单类中,还是放在唯一类中?

C# 将表单的方法保留在表单类中,还是放在唯一类中?,c#,winforms,forms,class,controls,C#,Winforms,Forms,Class,Controls,我有一个表单,上面有3个选项卡控件,每个选项卡控件都有十几个文本字段。现在我有了修改Form1.cs中文本字段的所有方法,这是一个很长的类。我很好奇,是propper方法将调用表单控件的方法保留在该forms类中,还是应该将它们划分为其他类?我读了这篇文章,可能会感到困惑,但听起来选择的答案似乎是说,您不应该尝试从其他类访问表单控件? 如果可以将访问UI数据的代码保留在表单中,但将对该数据进行操作/执行计算的代码保留在另一个类中。通过这种方式,您将能够创建一个类或一组类,这些类可用于(比如)单元

我有一个表单,上面有3个选项卡控件,每个选项卡控件都有十几个文本字段。现在我有了修改Form1.cs中文本字段的所有方法,这是一个很长的类。我很好奇,是propper方法将调用表单控件的方法保留在该forms类中,还是应该将它们划分为其他类?我读了这篇文章,可能会感到困惑,但听起来选择的答案似乎是说,您不应该尝试从其他类访问表单控件?

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

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

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

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

这很容易做到,只需将表单的引用传递给另一个类,但随后它们就会紧密耦合,因此很脆弱

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

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


这样想,您将UI分离到选项卡中,从UI的角度来看,这背后有一些基本逻辑,因此,在分离选项卡上的控件执行的功能方面,应该有一些逻辑。我见过例外情况,但这通常是因为选项卡中的分离根本没有逻辑。

这很容易做到,只需将表单的引用传递给另一个类,但随后它们就会紧密耦合,因此很脆弱

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

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


这样想,您将UI分离到选项卡中,从UI的角度来看,这背后有一些基本逻辑,因此,在分离选项卡上的控件执行的功能方面,应该有一些逻辑。我见过例外情况,但这通常是因为选项卡中的分隔完全没有逻辑。

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

通过使用数据绑定将业务对象绑定到表单,可以节省大量工作。请参阅我的SO答案以了解的用法


通过使用MVC模式将逻辑分为三个部分,您可以更进一步。我不打算在这里详细解释。正是这样,MVC代表模型-视图-控制器。模型是业务类,视图是表单,控制器是管理模型和表单、加载和存储模型等的类。

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

通过使用数据绑定将业务对象绑定到表单,可以节省大量工作。请参阅我的SO答案以了解的用法


通过使用MVC模式将逻辑分为三个部分,您可以更进一步。我不打算在这里详细解释。正是这样,MVC代表模型-视图-控制器。模型是业务类,视图是表单,控制器是管理模型和表单、加载和存储模型等的类。

我对这一点还是很陌生,因为这完全超出了我的理解。我会开始读你刚才说的,希望我能理解一些。不过,谢谢。如果您右键单击GUI项目,选择“添加”,然后选择“用户控制…”,您可以很快开始。您将看到与表单类似的内容,并且您可以将控件拖到表单上并编写代码。然后,在构建项目后,可以将用户控件拖动到窗体上。如果你不完全理解,别担心,继续玩下去,它最终会“点击”的。基本概念是你在创造