Chr*_*fer 0 c# windows visual-studio winforms
我正在构建一个简单的Windows窗体应用程序.每次更改控件的值时,控件都会触发将新值发送到对象的事件.
问题是我想在每次发生时将IsDirty bool设置为true.我当然可以在每个事件方法中写入IsDirty = true,但我想知道是否有一种更为流畅的方法 - 因为我有大量的控件.
我可以将IsDirty = true代码放在方法中,并在每次触发任何TextChanged或ValueChanged事件时运行它吗?
关于事件的好处是可以一次订阅多个方法.你总是可以写一个特殊的处理程序:
private void UpdateIsDirtyHandler(object sender, EventArgs e)
{
IsDirty = true;
}
Run Code Online (Sandbox Code Playgroud)
在表单的Loaded事件中,迭代所有引发TextChanged事件的子控件(TextBoxes,ComboBoxes等)并将此处理程序附加到它们:
// psuedocode:
foreach( Control ctl in myForm.Controls )
{
if( ctl is TextBox )
{
((TextBox)ctl).TextChanged += UpdateIsDirtyHandler;
}
if( ctl is ComboBox ) { ... }
// etc...
}
Run Code Online (Sandbox Code Playgroud)
如果你的表单有一组Model对象(一般来说这是一个很好的练习),你可以在那里处理"很脏"的跟踪逻辑.在您的模型中,脏跟踪并不总是合适的 - 这取决于您的"IsDirty"概念是否仅适用于用户界面或模型.
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |