【发布时间】:2013-08-23 02:31:32
【问题描述】:
在下面的代码中,Form1 打开另外两个Forms,然后关闭其中一个。结果是第二个子窗体也被关闭了。为什么?
public partial class Form1 : Form
{
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer { Interval = 2000 };
public Form1()
{
InitializeComponent();
ShowForm3();
(new Form2()).ShowDialog();//If this is changed to 'Show' - it doesn't get closed.
}
void ShowForm3()
{
Form3 f3 = new Form3();
f3.Show();
timer.Tick += (sender, e) => f3.Close();
timer.Start();
}
}
Form2 和 Form3 是默认的 VS 表单。
(另外:这是原始代码的简单版本。在原始代码中(当然,这里发布太长)从 Visual Studio 执行时不会发生这种情况(既不是调试也不是发布)。它仅在作为 clickonce 应用程序安装时发生,然后 - 即使我只是单击可执行文件(在 AppData 文件夹下)。(也许还有其他一些代码阻止它发生在从 VS 执行,但我还没有找到什么。)可能是什么导致了这种差异?也许是 clickonce 中的某种类型的优化,而在常规发布模式下没有完成?)
【问题讨论】:
-
是时候打开
Reflector -
@SriramSakthivel 我假设您的意思是最后一段。好主意。谢谢。
-
不,我可以使用 VS 本身重现