1

我正在使用两种形式,当出现第二种形式时,我禁用第一种形式。当第二个表单关闭时,我找不到启用第一个表单的方法。传递参数可能是一种解决方案,但我敢打赌有一种更简单的方法。首先,我想在第二个的析构函数上启用第一个表单,但无法做到。有人有什么建议吗?

4

2 回答 2

2

您可以使用 ShowDialog() 显示第二个表单 - 表单将显示为模态,第一个表单只有在第二个关闭时才会启用。

对于未来的问题,您可以使用第二种形式的字段来拥有第一个实例,并在需要时使用该实例,例如,您可以使用自定义构造函数:

class SecondForm: Form
{
   FirstForm _parentForm;

   public SeconForm(FirstForm form)
   {
      InitializeComponent();
      _parentForm = form;
   }

   void DoSomethingWithParent()
   {
      _parentForm.DoSomesting();
   }
}
于 2012-08-13T13:34:20.870 回答
2

如前所述,在这种特定情况下,使用模式对话框打开第二个表单可能是有意义的。

为了涵盖不适用的情况,公认的最佳实践是从第一种形式订阅FormClosing第二种形式的事件,并且在事件处理程序中,您可以启用“您自己”并执行您可能想做的任何其他事情由于另一个表单被关闭而执行。这是一个简单的例子:

public partial class ParentForm : Form
{
    private void button1_Click(object sender, EventArgs e)
    {
        ChildForm child = new ChildForm();

        child.FormClosing += new FormClosingEventHandler(child_FormClosing);
        Hide();
        child.Show();
    }

    private void child_FormClosing(object sender, FormClosingEventArgs e)
    {
        Show();
    }
}
于 2012-08-13T13:54:26.833 回答