Smobiler中Form窗体切换超出10次报错--学中,可以解决窗口的关闭

本文介绍了一个关于在Windows Forms应用中频繁切换窗体导致FormStackMaxCountexceed异常的问题及解决策略。通过使用Show方法的回调事件来优雅地关闭前一个窗体,避免了堆栈溢出错误,同时提供了窗体间参数传递的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

切换Form时,通过 show(Form);打开新窗体;再通过 this.Form.Close();关闭窗体,但是切换超出10次后,就会异常报错。报错提示:FormStackMaxCount exceed:10

解决

利用Show的回调关闭窗体this.Show(b,(obj,args)=>{this.Close();//回调事件在b关闭后触发});
例如:
窗体a中写代码跳转b,this.Form.Show(b,(obj,args)=>{this.Close();//回调事件在b关闭后触发,this指a窗体});
窗体b中写代码跳转c,this.Form.Show(c,(obj,args)=>{this.Close();//回调事件在c关闭后触发,this指b窗体});
c页面中执行this.Close(), c 这样从c关闭时会执行回调中的方法关闭b,关闭a的

补充

窗体a跳转窗体b,关闭窗体b刷新窗体a也可以通过Show的回调事件实现,例如:
a窗体中代码写
this.Form.Show(b,(obj,args)=>{
textbox1.Text=b.x;//将窗体b的参数x赋值给窗体a中textbox1的text });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值