单击一个按钮(在主窗体中),我会显示一个(第二个)窗体,它对存档文件进行一些解析(解压缩、提取、获取信息等)。完成此过程后,我关闭第二个(解析)表单并显示另一个(第三个)表单,其中包含来自存档的解析信息。
点击回调看起来像这样:
private void ParseInputBackupButton_Click(object sender, EventArgs e)
{
Form PBF = new ParseBackupForm();
Form CBF = new CreateBackupForm();
PBF.FormClosed += delegate
{
CBF.ShowDialog();
};
PBF.ShowDialog();
}
和第二种形式:
private void ParseBackupForm_Load(object sender, EventArgs e)
{
new Thread((ThreadStart)delegate
{
// parse and update form
this.Invoke((MethodInvoker)delegate
{
this.Close();
});
}).Start();
}
问题是当第三种形式 ( CreateBackupForm
) 出现时,第二种形式 ( ParseBackupForm
) 不会关闭。他们都出现了。如果我不显示第三种形式,则第二种形式将关闭。
我究竟做错了什么?
当您同时调用ShowDialog
两个窗口时,您不能一个接一个地调用它们吗?
IE
PBF.ShowDialog();
CBF.ShowDialog();
在 PBG 对话框关闭之前,不会进行第二次调用。
编辑:第二个表单没有关闭的原因是您订阅了表单关闭时引发的事件,然后在该委托调用ShowDialog
中阻止了表单实际关闭。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句