C# 如何取消表单中的更改并返回到加载状态

C# 如何取消表单中的更改并返回到加载状态,c#,forms,C#,Forms,我在Revit中创建了一个按钮,在该按钮中,我按了一个“加载表单”按钮。表单包括组合框和一些要添加或删除的按钮。表单中提供了一个取消按钮。我的意思是,当用户单击“取消”按钮时,所做的所有更改都将被忽略,当用户单击Revit中的按钮时,表单将以初始状态加载,我的意思是不存在任何更改 我做了以下操作,但它不起作用! 当表单加载时,我借助静态类(FormState)备份表单,该类有一个属性(PreviousForm) 然后,当我按下“取消”按钮时,我会执行以下操作: private v

我在Revit中创建了一个按钮,在该按钮中,我按了一个“加载表单”按钮。表单包括组合框和一些要添加或删除的按钮。表单中提供了一个取消按钮。我的意思是,当用户单击“取消”按钮时,所做的所有更改都将被忽略,当用户单击Revit中的按钮时,表单将以初始状态加载,我的意思是不存在任何更改

我做了以下操作,但它不起作用! 当表单加载时,我借助静态类(FormState)备份表单,该类有一个属性(PreviousForm)

然后,当我按下“取消”按钮时,我会执行以下操作:

        private void q_btnCancel_Click(object sender, EventArgs e)
    {
        this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
        FormState.diagResult = this.DialogResult;
        this.Close();
    }
最后,当我按下Revit中的按钮以加载表单时,我执行以下操作:

                    if (FormState.diagResult == DialogResult.Cancel)
                {
                    FormState.PreviousForm.ShowDialog();
                }

但是当表单加载时,所有更改都存在,而且“取消”按钮似乎无法正常工作。

这是意料之中的事,因为您再次显示相同的表单。但是您可以在没有任何外部知识的情况下完成这项工作:拥有一个保存表单数据的模型。在显示表单时,您加载该数据,但同时,您将制作(深度)副本并将表单绑定到该数据。现在,如果更改被接受,则保存更改的模型(模型副本),如果取消,则只需处理模型副本。谢谢Fildor。如何执行代码中提到的过程?问题不太清楚,您需要让我们知道是否使用数据绑定、您的数据源(DataSet?EntityFramework?…)以及将数据传递到表单的方式等。
                    if (FormState.diagResult == DialogResult.Cancel)
                {
                    FormState.PreviousForm.ShowDialog();
                }