用途:在开发 Windows Forms UI、事件驱动工作流或经典 LOB 应用时提供指导,也覆盖从 .NET Framework 迁移到现代 .NET、清理过大的窗体代码或设计器耦合、实现数据绑定与验证等场景。
主要能力与做法:尊重设计器边界,不要直接编辑 .Designer.cs,因为重新生成会丢失改动;将业务逻辑与窗体分离,采用 MVP(Model-View-Presenter)模式,窗体负责编排 UI,Presenter 承载逻辑,服务层处理数据访问。视图以接口形式定义,窗体实现该接口,Presenter 可在无 UI 情况下测试。.NET 6+ 可在 Program.cs 中使用依赖注入,通过 ServiceCollection 注册服务与窗体,再用 Application.Run(sp.GetRequiredService<MainForm>()) 启动。数据绑定优先使用 BindingSource 与 INotifyPropertyChanged,而非手动填充控件。I/O 操作使用 async/await,加载期间禁用控件,用 Progress<T> 报告进度,不要阻塞 UI 线程。验证使用 ErrorProvider 与 Validating 事件,保存前调用 ValidateChildren()。现代化建议增量进行,优先改善结构而非大爆炸式重写,可用时采用 .NET 8+ 特性。
关键取舍:WinForms 优先 MVP 而非 MVVM;列表/明细绑定始终优先 BindingSource;I/O 始终异步,async void 仅用于事件处理器;窗体超过约 300 行时抽取可复用 UserControl;迁移时参考官方迁移指南并先验证设计器兼容性。
适用场景:Windows Forms 桌面应用开发、维护与现代化改造。限制:运行时行为仅限 Windows,需在目标环境测试;资料未提供具体收费、价格或平台支持范围等信息。