最近在写一个小程序,遇到子窗口打开多次的情况,通过查找找到了解决办法,但是有写不尽人意,比如对子窗体最小化时的处理。
因此进行了优化得到如下代码,目前测试可能遇到的情况都完美解决,包括子窗体最小化:
Form test = Application.OpenForms["about"]; //查找是否打开过about窗体
if ((test == null) || (test.IsDisposed)) //如果没有打开过
{
about aboutus = new about();
aboutus.Show(); //打开子窗体出来
}
else
{
test.Activate(); //如果已经打开过就让其获得焦点
test.WindowState = FormWindowState.Normal;//使Form恢复正常窗体大小
}