情态形式消失的奥秘
本文关键字:奥秘 消失 | 更新日期: 2023-09-27 18:18:03
在这个WinForms项目中,我有一个特定的信息表单(InfoForm
),它弹出2秒,然后消失。我的方法是调用
infoForm.Show();
然后在InfoForm
中,我有一个Timer
,在2秒后滴答并调用Close()
。
现在,有时有另一个形式ErrorForm
我需要显示模态(使用errorForm.ShowDialog()
),通知用户发生了错误,他们需要点击OK才能继续。这可能发生在InfoForm
打开和关闭时,一个不应该影响另一个。
但是它有。
我已经走了这么远,把一个断点调用到ShowDialog
,如果InfoForm
是打开的时候,我打了断点,然后当我点击"跨一步",而不是弹出ErrorForm
,等待我点击"ok",调试器只是步过行,已经在下一行,好像窗体从未打开。同时,在后台InfoForm
已经关闭,所以如果我将执行点重置为对ErrorForm.ShowDialog()
的调用,然后"Step over",表单就会出现,并等待我点击"ok"。
删除断点并写入调试日志证实了我的怀疑,这是InfoForm
的关闭导致我的ErrorForm
过早关闭:
线程09 - 2011/12/14 16:39:30.574 -信息形式显示
线程09 - 2011/12/14 16:39:31 300 -之前的ErrorForm。ShowDialog
线程09 - 2011/12/14 16:39:32.584 -计时器滴答
线程09 - 2011/12/14 16:39:32.585 -信息形式关闭
线程09 - 2011/12/14 16:39:32.593 -表单关闭错误
线程09 - 2011/12/14 16:39:32.593 -后ErrorForm。ShowDialog
为什么会发生这种情况,治疗方法是什么?
您应该将MainForm
作为所有者传递给ErrorForm.ShowDialog()
。