C# 如何加载表单并加载用户应用于该表单的更改?

C# 如何加载表单并加载用户应用于该表单的更改?,c#,winforms,C#,Winforms,假设我们有一个具有不同控件的窗体。比如说一个文本框和一个chkbox。如果用户键入某个内容并更改检查状态,我希望通过关闭表单并再次打开它,我将能够在关闭前查看表单的状态(而不是设计状态)。我需要在一个有大约50个不同控件的表单上实现它。你能给我一个提示吗?顺便说一下,我正在用C语言编程。编辑:新答案: 并保存它们(在字典[名称、值]中,或保存到文件或数据库中,由您选择)。然后,当需要再次显示表单时,请反转此过程。通过子级递归,并从列表中查找控件的上一个值。如果旧文件不包含该值,请使用默认值(不要

假设我们有一个具有不同控件的窗体。比如说一个文本框和一个chkbox。如果用户键入某个内容并更改检查状态,我希望通过关闭表单并再次打开它,我将能够在关闭前查看表单的状态(而不是设计状态)。我需要在一个有大约50个不同控件的表单上实现它。你能给我一个提示吗?顺便说一下,我正在用C语言编程。

编辑:新答案:

并保存它们(在字典[名称、值]中,或保存到文件或数据库中,由您选择)。然后,当需要再次显示表单时,请反转此过程。通过子级递归,并从列表中查找控件的上一个值。如果旧文件不包含该值,请使用默认值(不要设置文本/选中属性)

原始答复: 防止表单真正关闭,因此在表单中

protected override OnClosing (CancelEventArgs ea)
{
   ea.Cancel = true;
   this.Hide ();
}
然后,当您需要再次显示表单时

myForm.Show ();

这将使一切保持原样。

我认为正确的方法是定义一个包含表单所需所有信息的数据模型。然后可以持久化该数据模型(数据库、xml等)并再次加载它。当您打开表单且当前用户尚未完成表单时,您可以根据数据模型填写表单值。这将使您的数据(我认为您实际上对业务逻辑感兴趣)与视图分离。您可能想看看Model View Presenter设计模式。

您是在谈论winforms、WPF、webforms等吗?谢谢,但我需要的是以某种方式保存表单。因为我需要向用户提供以下选项之一:1。创建新的2。编辑现有的。表单实际上得到了运行模拟所需的调整,因此很难每次都调整首选项。另外,将来应该可以加载不同的调整。@阿米尔,我已经提出了一个新的答案。是的,这会有所帮助。然而,我有用户定义的控件和由用户填充的组合框,不同控件之间有不同的事件交互。我在考虑序列化。有没有什么东西可以简单地将表单写入一个文件及其所有复杂的内容?如果你说的是[Serializable]、ISerializable、BinaryFormatter等等。那么,没有,这个问题没有简单的解决方案。那太好了,但是太复杂了。好吧,谢谢,我只是想确定,没有任何简单的保存方法。