2

提案されたすべての回答を見てきましたが、探しているものに合うものはないようです。メイン フォームから 2 番目のフォームを呼び出し、2 番目のフォームがアクティブな間はメイン フォームを非表示にし、2 番目のフォームが閉じたときにメイン フォームを再表示したいと考えています。基本的に、2 つのフォームを「切り替え」たいと考えています。

これまでのところ、私は持っています:

私のメインフォームでは:

private void countClick(object sender, EventArgs e)
{
    this.Hide(); 
    subForm myNewForm = new subForm();
    myNewForm.ShowDialog();
}

そして私の2番目のフォームには次のものがあります:

private void totalClick(object sender, EventArgs e)
{
    this.Close();
}

メインフォームを表示するにはどうすればよいですか?

4

5 に答える 5

2

ShowDialogは、セカンダリ フォームをモーダル ダイアログとして開きます。つまり、MainForm のコード実行はその時点で停止し、セカンダリ フォームにフォーカスが置かれます。そのためthis.Show、ShowDialog 呼び出しの後に a を配置するだけです。

上記のリンクから:

このメソッドを使用して、アプリケーションでモーダル ダイアログ ボックスを表示できます。このメソッドが呼び出されると、その後のコードは、ダイアログ ボックスが閉じられるまで実行されません。

private void countClick(object sender, EventArgs e)
{
    this.Hide(); 
    subForm myNewForm = new subForm();
    myNewForm.ShowDialog();
    this.Show();
}
于 2013-06-25T00:53:52.530 に答える
1

Form1ボタンをクリックして表示するとしましょうForm2

 Form2 frm2 = new Form2();
 frm2.Activated += new EventHandler(frm2_Activated); // Handler when the form is activated
 frm2.FormClosed += new FormClosedEventHandler(frm2_FormClosed); // Hander when the form is closed
 frm2.Show();

さて、これは呼び出しフォームが表示されてForm2いるかActivated、非表示になっている場合です。この場合、Form1

    private void frm2_Activated(object sender, EventArgs e)
    {
        this.Hide(); // Hides Form1 but it is till in Memory
    }

では、いつForm2ClosedなるでしょうUnhide Form1

   private void frm2_FormClosed(object sender, FormClosedEventArgs e)
    {
        this.Show(); // Unhide Form1
    }
于 2013-06-25T01:07:38.923 に答える
0

同じ名前空間で作業しているmainform場合は、「メインフォーム」に付けた名前または名前を使用してコンテキストを持っている場合は、次を試してください。

mainform.show();
于 2013-06-25T00:42:30.710 に答える
0

メイン フォームへの参照を 2 番目のフォーム クリック イベント ハンドラに渡す方法を見つける必要があります。

これを行うには、フォームを 2 番目のフォーム クラスのメンバー変数として設定するか、イベント引数を介して渡します。

于 2013-06-25T00:48:21.443 に答える