在网上经过搜索之后,我发现没有找到我想要的答案,大部分都是可以从主窗口隐藏和显示子窗口,反过来貌似不太容易做到
在网上发现一个很有用的忠告是:
不管用什么办法,别在子窗口用new创建主窗口对象,这样只会创建一个新的主窗口,而不会显示隐藏起来的原来的主窗口
并且调用主窗口的close函数关掉的也是新创建的对象
因此目前我想到的办法是,定义一个静态bool变量,作为标志位,当需要在子窗口中显示主窗口时,就将此标志位设为true
然后在主窗口创建一个定时器控件,检测此标志位是否发生变化,若变为true,则调用主窗口的show函数,将隐藏的主窗口显示出来
这样就成功解决了问题,窗口显示的速度取决于定时器设定的定时值,若设置为100ms,则几乎是瞬间显示,500ms则会明显出现一定时间的卡顿
注意:标志位记得重置
///主窗口中的方法
//标志位
public static bool Form1Flag = false;
//定时器
private void timer1_Tick_1(object sender, EventArgs e)
{
if (Form1Flag)
{
this.Show();
Form1Flag = false;
}
}
///子窗口中的方法
//子窗口的按键
private void CertifyPlan_Click(object sender, EventArgs e)
{
this.Hide(); //将子窗口隐藏
Form1.Form1Flag = true; //主窗口标志位设为true,用以显示主窗口
}
分享一点小技巧,若有更好的方法或者错误,请麻烦指出,一定认真学习改正