重新打开使用ShowDialog()显示的已关闭表单

时间:2011-06-14 04:20:46

标签: c# .net winforms 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,当用户每次按下ALT + H时,FormMain中的值将与FormHelper.So中的值一起保存,以下代码将不起作用:

BillsForm= new FormHelper();
BillsForm.ShowDialog(); 

因为它正在创建一个新表单,所有旧值都将被删除。

2 个答案:

答案 0 :(得分:0)

如果要在关闭后将这些值存储在主窗体中,则可以在创建时通过构造函数或setter将这些值发送回FormHelper。从您的问题来看,听起来您已经将要存储的那些值存储在主窗体中,因此在创建时设置它们应该不是问题。

答案 1 :(得分:0)

在主窗体中,存储对辅助窗体的引用。 您实例化一次帮助器表单(例如onLoad)并继续在同一个对象上调用showDialog()。应在呼叫之间保留所有字段。