我正在开发一个程序,点击form1上的按钮将打开form2.然后我将隐藏form1,直到form2关闭.我遇到的问题是我无法在form2关闭后显示form1.有想法该怎么解决这个吗?
try
{
Form1.ActiveForm.Hide();
AddGradeForm = new Form2(Form.NumberOfSelections);
AddGradeForm.ShowDialog();
MessageBox.Show(AddGradeForm.Result.ToString());
}
catch (Exception i)
{
Form1.ActiveForm.Hide();
AddGradeForm.Dispose();
AddGradeForm = new Form2(Form.NumberOfSelections);
AddGradeForm.ShowDialog();
MessageBox.Show(AddGradeForm.Result.ToString());
}
Form1.ActiveForm.Show();
Run Code Online (Sandbox Code Playgroud)
错误:NullReferenceException未被覆盖.你调用的对象是空的.
那是因为没有活动形式,你隐藏了一个可能活跃的形式.这有其他副作用,您的应用程序将失去焦点.您需要做的是跟踪以前活动的表单,并在对话框关闭之前再次显示它.像这样:
var prior = Form.ActiveForm;
using (var dlg = new Form2()) {
dlg.FormClosing += delegate { prior.Show(); };
prior.Hide();
if (dlg.ShowDialog() == DialogResult.OK) {
MessageBox.Show("result");
}
}
Run Code Online (Sandbox Code Playgroud)