两个form切换,主form弹出从form,先上代码:
主:
从:
- private void ASDSubForm_FormClosed(object sender, FormClosedEventArgs e)
- {
- this.Owner.BringToFront();
- this.Owner.Enabled = true;
- }
主要是解决了以下问题:
1,使用Show()方法,而不是ShowDialog()方法,避免在从form弹出后,主form的功能失效的问题。比如使用ShowDialog()时,主form类中的串口接收进程在从form弹出后就停止执行,所有接收到的数据只存在于缓存区,而不进入串口中断委托函数。
2,this.Enabled = false; 解决了从form弹出后,还能继续操作主form的问题;
3,subForm.StartPosition = FormStartPosition.CenterScreen; 是使弹出的form位置居于屏幕中心;
4,subForm.Show(this); 可以用 subForm.Parent = this; subForm.Show(); 这两句代替,以便subForm靠前显示,并且便于后续调用;
5,在subForm类中增加 _FormClosed 函数,在从form关闭时调用,以使主form前端展示并使能;
7,替换掉了定时器中检测主form的使能标记,然后使用 this.TopMost = true; this.Enabled = true; 的方式;因为这个方法会造成在定时间隔中,假设1s检测一次。在关掉从form时,由于主form的Enabled还处于false状态,导致此时form展示位于桌面其他应用(如网页等)的背景之下,直到执行TopMost时重新把form前置。看起来就是关掉从form,主form消失,然后突然一闪,弹出主form,体验很不好。