我有一个表单,里面有几个组件,比如TextBox
和ComboBox
,我需要知道当点击“退出”按钮时,表单是否发生了任何更改。有没有办法做到这一点?
您可以循环遍历所有控件,但这必须是递归的,因为一个控件可以包含其他控件,例如(为简洁起见没有空值检查):
private void IterateOverControls( Control parent )
{
ProcessControl( parent );
foreach( Control control in parent.Controls )
IterateOverControls( control );
}
如果这个已经快完成了,而且你需要快速实现某些功能,那么最好假定有些东西已经发生了变化,并在更新逻辑中(无论正在做什么)不更新仍然相同的内容,这样可能更容易。
正如其他人提到的那样,有可能有人更改了某些内容,然后又将其更改回来。在这种情况下,你想做什么?没有额外的工作,你就无法维护表单的正确状态。这是一个需要你在开始之前计划的事情。