概要:私がやろうとしていることをすべて説明するコード (2 つの関数) と、私の問題を示す図
アプリケーションで新しい子フォームを開く必要があるときはいつでも。私は次の関数を呼び出すために使用します。(子フォームは別の子を持つことができます)
public void openNextForm(Form f1, Form f2)
{
f2.Owner = f1;
f2.WindowState = FormWindowState.Maximized;
f2.FormClosing += new FormClosingEventHandler(f_FormClosing);
f1.Hide();
f2.ShowDialog();
}
// When I close a child form by clicking cross or with ALT-F4
void f_FormClosing(object sender, FormClosingEventArgs e)
{
Form f = sender as Form;
f.Owner.Show();
}
子フォームを閉じると、所有者/親フォームを表示するために使用します。正常に動作しています。
ただし、場合によっては、所有者フォームの一部のコントロール (ボタン) が、子フォームを閉じるときに表示されると非表示になります。
しかし、このフォームの実際の状態は
複雑で長いコード化された子フォームから戻る場合にのみ、この動作に直面する必要があります(この場合でも、いつかは正常に動作します)。単純な (小さなコード化された) 子フォームの場合、動作は正常です。
挙動不審なフォームでaltキーを押すと、驚くほど元の状態で表示される
私はこの問題を探してみましたが、似たようなものをたくさん見つけましたが、私が見ることができる最も近いものは次のとおりでしたが、それでもshowdialogの場合はまったく役に立ちません
C# フォームの問題: 新しいフォームが制御を失い、ランダムに非表示になる
上記のリンクから次のコードを使用する場合、子フォームを開いてから子フォームを開くたびに。すべてのフォームが非表示になります。そのため、うまく機能していません。
public void openNextForm(Form f1, Form f2)
{
f2.Owner = f1;
f2.Show();
f1.Hide();
f2.FormClosing += new FormClosingEventHandler(f_FormClosing);
}
タブを使用することは解決策になるはずですが、閉じる/非表示にする/表示するときに、フォームを個別に保持し、すべてのケースで一貫した動作を維持したい