我的方法是Winforms编码老派

Mik*_*e Q 7 c# lifecycle binding winforms

我正在开发的项目非常庞大,我们开发了一个框架,可以轻松构建简单的UI屏幕.我们有两种基本类型:搜索(搜索参数+结果网格)和细节(一组编辑器,通常从一些模型对象填充).

该应用程序是所有C#.NET Winforms.

在细节中,我们有以下过程.

  • 加载 - 根据相应的模型对象填充编辑控件.在显示详细信息之前调用

用户点击确定

  • 验证 - 验证详细信息以确保一致性
  • 接受 - 将更新的控制值复制回模型

这一切都适用于简单的东西,但在更复杂的情况下,我注意到上述方法可能并不是最顺利的.

上面提到的更复杂的情况是,细节表示模型对象,并且细节中嵌入了一个网格,其中包含可以添加和删除的"子"对象.通常,您希望启动子Detail并传入父模型对象,但此时它尚未完全填充/更新,因为只有在单击OK时才会发生.我发现自己有时会以恼人的方式解决这个问题,这引出了我以下问题.

在高级别,是细节屏幕的接受/最佳实践方法,就像我描述的那样,当控件更改时将值复制到模型对象,而不是等到单击确定?

如果是这样,在Winforms应用程序中,实现这一目标的最佳方法是什么?我发现有些文章提到Control.DataBindings但由于绑定时缺乏编译时安全性,因此它并不理想.我读过WPF有很好的绑定支持,但不幸的是,我没有使用WPF.

ukh*_*rdy 0

这可能有帮助:

演练:使用两个 Windows 窗体 DataGridView 控件创建主/详细信息窗体

http://msdn.microsoft.com/en-us/library/y8c0cxey.aspx