C# 多个.cs文件访问一个windows窗体
为了更好地组织我的代码,我想将我的win表单拆分为多个*.cs文件 例如:C# 多个.cs文件访问一个windows窗体,c#,winforms,C#,Winforms,为了更好地组织我的代码,我想将我的win表单拆分为多个*.cs文件 例如: 对于我放置在tabPage1中的所有元素,我希望能够从“Tab1.cs”访问它们 对于我放置在tabPage2中的所有元素,我希望能够从“Tab2.cs”访问它们 另外,当我在这些不同的页面中有多个文本框,并且我想生成一个动作时,例如,“Key up”,我想在特定的.cs文件(Tab1或Tab2)中有这些事件的定义 这是一种方法吗 您可以通过以下方式使大量代码远离表单: 使用数据绑定 注射服务 使用MVC模式 数
- 对于我放置在tabPage1中的所有元素,我希望能够从“Tab1.cs”访问它们李>
- 对于我放置在tabPage2中的所有元素,我希望能够从“Tab2.cs”访问它们李>
您可以通过以下方式使大量代码远离表单:
- 使用数据绑定
- 注射服务
- 使用MVC模式
公共部分类价格计算表单:表单
专用只读IPriceCalculator(价格计算器);
公共价格计算表(IPriceCalculator priceCalculator)
{
_价格计算器=价格计算器;
}
}
这允许您注入不同版本的计算器,并且可以在单元测试中测试服务,而不涉及UI
MVC模式
您甚至可以更进一步,通过不绑定到纯数据类,而是绑定到视图模型类,从表单中删除更多逻辑。此类类通常实现INotifyPropertyChanged
接口。使用此机制,当修改视图模型中的属性时,表单会自动更新
可以绑定到控件的任何属性。通常,您会将一个属性绑定到文本框的文本
属性,但您还可以绑定到可见
或启用
或背景色
属性。这允许您通过绑定来控制窗体的可视方面
这同样允许您通过引入控制器从表单中删除更多代码(请参阅)
控制器用作数据类、视图模型类(如果区分两者)之间的编排器,服务和表单。然后将服务注入控制器而不是表单。如果因此应用此模式,则表单仅包含设计器生成的代码。您还可以创建UserControls 每个用户控件都有自己的文件 然后在选项卡中添加用户控件
与前一篇文章一样,尝试尽快将事件处理程序完成的作业提取到一个外部类(理想情况下,该类将位于一个专用的csproj中……它将有自己的unitTest csproj)您可以使用用户控件,每个选项卡页一个,这是组织代码的一种非常基本的方法。如果您已经有了这些控件,甚至可以这样做。
TabControl:
|
├── tapPage1/
│ ├── Tab1.cs
└── tapPage2/
├── Tab2.cs