C#分割窗体应用程序

3
我有一个带有主选项卡控件和多个选项卡(tabTest1,tabTest2,...,tabSettings)的Windows表单。如何将设计器生成的单个文件拆分为更小、更易于管理的文件?我尝试使用partial class,但出于两个原因,这并不理想。
  1. 无论它们在哪个选项卡上,事件处理程序和设计器代码都会在同一个文件中生成。

  2. 我必须过度冗长地描述变量以保持清晰(从选项卡到选项卡)。例如,几个“测试选项卡”都有一个“编码器”变量,所以我必须做一些像testOneEncoderValuetestTwoEncoderLabel等的事情。非常烦人。

我相信有更好的方法(因此提出了这个问题)。请原谅我的n00bness。
谢谢!
2个回答

5
我会为每个“选项卡”和其中的控件创建自定义(容器/用户控件)类。然后,只需将这些单独的控件作为一个单独的控件放在选项卡界面上。这样,它可以将控件作为单个单元保持在一起,而不会交叉重叠......特别是当您处理100个控件时?
容器/用户控件1有其(例如)30个相应于选项卡1的控件
容器/用户控件2具有其(例如)18个相应于选项卡2的控件
容器/用户控件3具有其(例如)50个相应于选项卡3的控件
然后,在选项卡页的主窗口上,只需将单个控件放在各自的页面上。它们现在是更易管理的子组件。

我在我的项目中添加了一个用户控件,并调整了它的大小。在设计模式下,我该如何将这个用户控件添加到选项卡页中?还是必须通过代码来完成? - john
@Jon,一旦创建并重新编译项目以将其视为控件,在进行设计工作时,它应该在“工具箱”中可见。然后你应该能够像其他窗口控件一样将其拖放到表单上。请问你使用的是哪个版本的Visual Studio? - DRapp
太好了,谢谢DRapp!我正在引用几个其他的.dll文件,并且在它们的控件中找到了它。再次感谢! - john

4
最好的做法是尝试将每个选项卡的功能作为单独的实体进行隔离,并为每个选项卡创建一个UserControl。如果选项卡本身太大,您的UserControl可以进一步分成更多的子控件以获得更细致的粒度。您的用户控件不需要相互隔离,它们可以公开数据、方法或事件,以便在主窗体上组合在一起。
如果您想在同一表单上保留所有内容,则不能两全其美。您必须:
  1. 如果要使用VS设计器编辑表单,则将所有内容保留在同一designer.cs文件中
  2. 手动编写UI代码并按照您所希望的方式进行整理

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接