【发布时间】:2013-06-18 20:40:12
【问题描述】:
我正在构建一个简单的 Windows 窗体应用程序。每次更改控件的值时,控件都会触发将新值发送到对象的事件。
问题是,每次发生这种情况时,我都想将 IsDirty bool 设置为 true。我当然可以在每个事件方法中编写 IsDirty = true,但我想知道是否有更巧妙的方法来执行此操作 - 因为我有大量控件。
我能否将我的 IsDirty=true 代码放在一个方法中,让它在每次触发任何 TextChanged 或 ValueChanged 事件时运行?
【问题讨论】:
-
IsDirty是 Data 概念,而不是 UI 概念。恐龙 Winform 的问题在于,您永远不会学会将 UI 与数据分开,因此会求助于各种可怕的 hack。而这应该通过在Model类中的OnPropertyChanged()方法中添加 1 行来解决。 -
@HighCore - IsDirty 不一定是所有情况下的模型概念 - 有时它是一个持久性概念,有时它纯粹是一个 UI 概念。在 OP 的情况下是哪一个尚不清楚。
-
谢谢 HighCore。我想你只是给了我一个解决方法的想法!我将把 isdirty bool 放在接收数据的对象中。然后在属性更改时将其设置为 true。我同意winforms。我需要学习WPF
-
@lbushkin 你能说出
IsDirty将成为 UI 概念的 1 个案例吗? -
@HighCore - 您有一个分层合成模型,需要跟踪何时显示表面区域并因此重绘。在这种情况下,“IsDirty”是严格意义上的 UI。
标签: c# windows winforms visual-studio