重新打开使用ShowDialog显示的已关闭窗体

问题描述

| 我正在制作一个应用程序,其中有一个
Form
FormMain和一个助手
Form
FormHelper。 为了理解,举一个例子,在FormMain中,用户正在键入订单,而用户经常想打开FormHelper并在其中填充一些值。 保存订单时,将同时保存FormMain中的值和FormHelper。 我所做的是使FormHelper成为FormMain定义中的一个字段:
public partial class FormMain : Form
{
    FormHelper BillsForm;
}
并且,在构造函数中:
 public FormReceiptNew(string ReceiptNo)
    {
        InitializeComponent();
        BillsForm = new BillsForm();//just once
    }
现在假设用户在填充FormMain时想要在FormHelper中输入一些值,他/她可以按ALT + H,然后将使用
ShowDialog()
显示该表单,完成后,用户关闭FormHelper,并且相同的过程将发生多次,需要FormHelper。 我希望多次打开同一个Form的原因是,用户正在其中填充某些值,并且我想在下次再次显示FormHelper以及当用户完全用FormMain完成操作时保留这些值。 FormMain中的值将与FormHelper中的值一起保存。因此,当用户每次按ALT + H时,以下代码将不起作用:
BillsForm= new FormHelper();
BillsForm.ShowDialog(); 
因为它正在创建一个新表单,所有旧值都将被删除。     

解决方法

        在您的主表单中,存储对帮助表单的引用。 您一次实例化帮助程序窗体(例如onLoad),并继续在同一对象上调用showDialog()。两次调用之间应保留所有字段。     ,        如果要在关闭后将这些值存储在主窗体中,则可以在创建时通过构造函数或setter将这些值发送回FormHelper。从您的问题看来,您已经要存储要保留在主表单中的那些值,因此在创建时设置它们就不是问题。