2

我有一个用 C# 编写的 Windows 窗体应用程序,其中一个窗体包含大量代码。我已经大量使用类来将表单代码保持在最低限度,但是由于表单有许多标签页和数百个控件和数据网格等,所以表单本身的代码仍然很丰富。

有没有办法将此代码分解为更易于管理和更小的项目,也许每个标签页的解决方案中有一个项目,同时将所有代码保持在同一范围内?

4

8 回答 8

3

如果您在不过多移动代码的情况下寻求更好的可读性和维护性,您可以使用:

#region Tab 1
#region Variables
#endregion
#region Properties
#endregion
#region Methods
#endregion
 #endregion

这将允许您在更改某个选项卡时最小化您不感兴趣的部分代码。它并不完美,但它可能会有所帮助。

于 2012-08-17T10:27:40.300 回答
2

如果您正在寻找重构代码及其框架,那么您必须了解SOLID原则。一篇很好的文章是SOLID Software Development, One Step at Time

于 2012-08-17T10:25:31.757 回答
1

您可以使用Partial Classes将代码拆分为几个 cs 文件,但我真的没有看到太多好处,唯一的解决方案是进行完全重构并将与 UI 无关的代码删除到单独的类中。

于 2012-08-17T10:21:51.393 回答
1

你基本上需要重构. 这是经典Windows 窗体应用程序的常见问题,因此您必须自律并决定如何整理。这不会是即时修复。

查找MVC / MVP,甚至MVVM并了解其他人如何分解他们的代码。从那里您可以引入适合您的分层架构。

然而,你并不孤单。Visual Studio 中甚至更好的ReSharper中的重构工具可以自动执行大量复制粘贴周期,消除错误并自动保持变量名称等同步。

于 2012-08-17T10:29:00.293 回答
0

属于用户控件表示层的代码可以放入扩展控件的类中。

于 2012-08-17T10:17:36.027 回答
0

从每个选项卡中提取代码并创建一个用户控件来包含每个选项卡的代码。(您甚至可以从 TabPage 继承并将这些添加到 init 的表单中)

然后可以将用户控件添加到每个选项卡中,并应显着减少代码。

网格等也可以转换为用户控件,公开其他控件访问所需的最少方法和属性。

于 2012-08-17T10:19:01.760 回答
0

如果您一遍又一遍地定义表单控件,只需在其他选项卡上创建它们的新实例。

创建 getter 和 setter 来访问它。

但实际上,为表单控件提供大量代码并没有问题,这正是我认为的方式。我认为 Visual Studio 应该使用Windows 窗体为您生成所有这些?

于 2012-08-17T10:19:45.410 回答
0

我个人对地区有疑问。它有时会抛出编辑器,您需要关闭并重新打开文件以重置它(我正在使用SharpDevelop中的Boo,它可能特定于此),因此对于带有选项卡的大型表单,我倾向于使用部分类。

你可以在 Visual Studio/SharpDevelop 文件资源管理器中做的一个巧妙的技巧是将部分类的文件拖到类的主文件上,这样它们都嵌套在 MainForm 下(在.designerand.resx文件旁边),这样可以让事情更整洁。

于 2012-08-17T12:26:37.910 回答