为了帮助用户重复数据输入,我正在尝试实现一个系统,在添加新数据时可以记住许多以前的属性。
是否可以使用 Properties.Settings.Default.MySetting 功能或者有更好的方法来做这种事情?
为了帮助用户重复数据输入,我正在尝试实现一个系统,在添加新数据时可以记住许多以前的属性。
是否可以使用 Properties.Settings.Default.MySetting 功能或者有更好的方法来做这种事情?
难道您不能只制作前一个对象的(深层)副本,并将其用作下一个对象,允许用户覆盖任何更改的字段吗?这样,这些字段将是用户最后输入的内容,每个用户个性化,并在他们更改这些字段时进行更新。
如果您有办法记住每个用户输入的最后一件事,那么您甚至可以在会话之间保留它。
OP评论:
不幸的是,当涉及到关系时,制作对象的深层副本会弄乱对象上下文。具有关系的新对象要么需要创建新的关系对象,要么需要从数据库中查询现有对象。
所以?如果该关系与另一个实体(数据库中的外键)相关,则它是一个使用关系,您只需保留它。如果它是一个属性,则复制它。
例如,假设您的表单是关于员工的数据输入,它有一个下拉列表,我不知道,employeeType 是“Exempt”(不加班)或“Non-exempt”(加班)。您从数据库中提取了employeeType 的值,并且您希望下一个输入的员工与最后一个输入的员工具有相同的值,以保存数据输入人员击键。因此,您的深层副本只会将复制的员工与相同的数据库员工类型相关联。
但对于属性数据(如名称),您需要制作一份副本。
这取决于您要达到的目标。使用 MySetting 功能的好处是可以在下次关闭应用程序时保留“最新”属性。
我假设这是一个winforms应用程序,所以我可能会在某个地方的哈希表中保留每个支持对象的最后保存的缓存实例,然后当你创建一个新表单时,在哈希表中查找支持对象和将所需的属性绑定到表单的新实例。
然后,您可以根据需要将整个哈希表序列化并持久化到 MySettings 对象,以便用户每次访问应用程序时都可以使用它。