私には2つのフォームがあります。1 つ目は親で、2 つ目とボタンへの参照が含まれています。
public class Form1:Form {
private Form2 frm2;
private Button btnShow;
...
}
ボタンを押すと、frm2 が表示され (他のすべてのウィンドウの前に表示され)、Form1 が非表示になる必要があります。
frm2 のクローズボックスを押すと、frm2 が非表示になり、Form1 が表示される (反転) 必要があります。
btnShow のクリック イベントを使用してハンドルを登録しました。
private void click(object sender, EventArgs e)
{
Hide();
frm2.Show(this);
}
および frm2 の FormClosing イベントで:
private void byebye(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.UserClosing)
{
e.Cancel = true;
Hide();
Owner.Show();
}
}
私のコードは 90% の時間機能しますが、(いつ指定できないか) 表示されたフォームが前面に表示されないか、フォーカスが失われることがあります (最初に考えたことについてはわかりません)。
私が間違っていること。Show と Hide の順序を交互に変更し、Owner の代わりに新しい参照を使用しようとしましたが、Activate、BringToFront、Focus も使用しましたが、成功しませんでした...