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