我有一个用 C# 编写的 Windows 窗体应用程序,其中一个窗体包含大量代码。我已经大量使用类来将表单代码保持在最低限度,但是由于表单有许多标签页和数百个控件和数据网格等,所以表单本身的代码仍然很丰富。
有没有办法将此代码分解为更易于管理和更小的项目,也许每个标签页的解决方案中有一个项目,同时将所有代码保持在同一范围内?
如果您在不过多移动代码的情况下寻求更好的可读性和维护性,您可以使用:
#region Tab 1
#region Variables
#endregion
#region Properties
#endregion
#region Methods
#endregion
#endregion
这将允许您在更改某个选项卡时最小化您不感兴趣的部分代码。它并不完美,但它可能会有所帮助。
如果您正在寻找重构代码及其框架,那么您必须了解SOLID原则。一篇很好的文章是SOLID Software Development, One Step at Time。
您可以使用Partial Classes将代码拆分为几个 cs 文件,但我真的没有看到太多好处,唯一的解决方案是进行完全重构并将与 UI 无关的代码删除到单独的类中。
属于用户控件表示层的代码可以放入扩展控件的类中。
从每个选项卡中提取代码并创建一个用户控件来包含每个选项卡的代码。(您甚至可以从 TabPage 继承并将这些添加到 init 的表单中)
然后可以将用户控件添加到每个选项卡中,并应显着减少代码。
网格等也可以转换为用户控件,公开其他控件访问所需的最少方法和属性。
如果您一遍又一遍地定义表单控件,只需在其他选项卡上创建它们的新实例。
创建 getter 和 setter 来访问它。
但实际上,为表单控件提供大量代码并没有问题,这正是我认为的方式。我认为 Visual Studio 应该使用Windows 窗体为您生成所有这些?
我个人对地区有疑问。它有时会抛出编辑器,您需要关闭并重新打开文件以重置它(我正在使用SharpDevelop中的Boo,它可能特定于此),因此对于带有选项卡的大型表单,我倾向于使用部分类。
你可以在 Visual Studio/SharpDevelop 文件资源管理器中做的一个巧妙的技巧是将部分类的文件拖到类的主文件上,这样它们都嵌套在 MainForm 下(在.designer
and.resx
文件旁边),这样可以让事情更整洁。