如何知道用户在winform中更改任何值?

Sam*_*Sam 5 c# winforms

我有窗户形式.表格中有许多控件.表单加载时,所有控件都将填充值.所有控件都可编辑,如文本框,下拉列表,单选按钮等,底部有更新按钮.

当用户更改值并按更新按钮时,更新值将保存.

但有时用户没有更改任何值并按更新.

那么现在,如何知道用户没有更改任何值来更新?是否有任何标准方式可以知道,用户编辑但不更改任何现有值?

注意:我不想逐个检查所有值.

Mat*_*gen 1

我总是一一检查,是的,这些值。你可以这样做,或者你可以映射每个TextChanged/ SelectedIndexChanged/等。事件方法并bool在那里设置一些来存储您知道某些内容已更改。但是,是的,据我所知,没有什么真正好的或好的方法可以做到这一点。这只是 UI 所需的那些乏味的事情之一。至少据我所知。不久前,我确实犹豫地离开了 Windows 窗体。

如果我非常认真地写一些东西,我个人会很想使用事件方法。它似乎更容易成功,而且您不必存储旧值并进行比较。当然,故障排除和调试可能有点困难,因为设计人员将为您处理大部分代码。所以这有优点也有缺点。鉴于此,我的一个建议是,如果您选择走事件路线,请在构造函数而不是设计器中手动注册事件。我经常看到设计师在进行一些更改后感到困惑,或者我忘记做某事或做某事,突然一个事件没有链接,我有一段时间没有测试它,然后我就当我这样做的时候很困惑。如果没有别的的话,自己处理代码的这方面可能是一个很好的提醒。它可能有点混乱,但相对而言,我喜欢认为这是一种很好的混乱。

当然,还要注意,无需为同一类型的每个控件都提供一个事件。将其限制为 1,如果需要,请检查是谁sender。但除非你必须这样做,否则我什至不会这样做。只需标记您的bool HasChanged或其他内容,然后在最后寻找更改时查看即可。