gpt4 book ai didi

c# - 使用 C# 撤消绑定(bind)对象中的更改

转载 作者:行者123 更新时间:2023-11-30 12:15:46 24 4
gpt4 key购买 nike

在我的应用程序中,我有一组数据对象,这些对象定义了应用程序在执行时收集的数据类型。

用户可以打开一个对话窗口来编辑这些对象,该对话窗口包含绑定(bind)到集合的 DataGridView 实例。这意味着用户所做的任何更改都会立即应用,这并不好。

另一个问题是这个对话框窗口有一个取消按钮,允许用户放弃他们在打开窗口后所做的所有更改。

当前,当窗口打开时,我会序列化所有对象(浅拷贝不起作用),如果用户单击“取消”,我会反序列化它们以恢复它们。我遇到的问题是这很乱。它更改了所有引用,并且其中一些对象还存储了未序列化的数据历史记录。然后,我必须让事件在应用程序中蔓延,以通知对象更新它们的引用等。这很痛苦。

有没有更好的方法来解决这个问题?

最佳答案

更好的方法,使用框架中的接口(interface) - IEditable

开始编辑
取消编辑
结束编辑

基本思想是在调用 BeginEdit 时创建某个对象状态的快照。在 CancelEdit 上,您回滚到该 SavedState,在 EndEdit 上您提交它。

当然,细节决定成败。这是一个流行的链接,它作为一些想法的类似 SO 问题的实现答案

http://www.paulstovell.com/blog/runtime-ui-binding-behavior-ieditableobject-adapter

干杯,
贝瑞尔

注意:这在概念上与 tocco 所说的没有区别,您应该给他答案。但值得在单独的答案中详细说明,因为它以 .Net 惯用的方式形式化了概念,并提供了对有用实现的更多洞察。此外,说地道这个词很有趣:--)

关于c# - 使用 C# 撤消绑定(bind)对象中的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6695129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com