public Form fr;
private void button2_Click(object sender, EventArgs e)
{
fr = Form1.ActiveForm;
fr.Hide();
Form3 fr1 = new Form3(fr);
fr1.Show();
}
2 に答える
2
シングルトンとして作成する必要はありませんがForm3
(それはできないと思います)、インスタンス化する必要があるのは1回だけです。たとえば、次のようなものを使用できます。
public Form fr;
Form3 fr1 = null;
private void button2_Click(object sender, EventArgs e)
{
fr = Form1.ActiveForm;
fr.Hide();
if(fr1==null)
fr1 = new Form3(fr);
fr1.Show();
}
于 2013-03-14T19:02:24.583 に答える
0
しないでください。
WindowsフォームはWin32hWndウィンドウをカプセル化するため、UIコンポーネントでシングルトンパターンを使用することはできません。Win32hWndウィンドウは最終的に破棄する必要があり、ウィンドウを復活させることはできません。シングルトンパターンとは逆に、ウィンドウを再作成する必要があります。
さらに、Windowsフォームデザイナには、パブリックのデフォルトコンストラクタが必要です。シングルトンを使用できる場合でも、デザイナーでフォームを編集するたびにプライベートコンストラクターを無効にする必要があります。
プロジェクトにコンシューマーがないと仮定すると、フォームをに変更して、internal
すべてのインスタンス化を自分で追跡することをお勧めします。
于 2013-03-14T19:02:35.980 に答える