次のコードでは、Form1
他の 2 つの を開きForm
、そのうちの 1 つを閉じます。その結果、2 番目の子フォームも閉じられます。なんで?
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 でのある種の最適化ですか?)