0

私は次のようなwinformsで似たようなものを探していました

// in Form 1
this.Hide();    
Form2 form = new Form2();
form.Show


// in Form 2
// if button pressed, Form 1 will be displayed, while Form 2 will be Hide.

FormEventHandler の運試しをしましたが、どこから始めればよいかわかりません。

提案/アイデアはありますか?

4

2 に答える 2

3

(この回答の目的のために、から継承するクラスForm1を表します)Form2Windows.Window

次のアプローチのいずれかをお勧めします

アプローチ 1:Form2生き続けて、再び表示できるようにする

この場合、次のインスタンス変数を作成する必要がありますForm1

private Form2 form2;

に「切り替える」コードでForm2、次のようにします。

if(form2 == null)
{
    form2 = new Form2();

    DependencyPropertyDescriptor.FromProperty(Window.VisibilityProperty, 
            typeof(Window)).AddValueChanged(form2, Form2_VisibilityChanged);
}

Hide();

form2.Show();

次に、この関数を に追加しますForm1

private void Form2_VisiblityChanged(object sender, EventArgs e)
{
    if(form2.Visility == Visibility.Hidden) Show();
}

Hide();あとは、 withinを呼び出しForm2て に戻すだけForm1です。

アプローチ 2:Form2毎回新しいインスタンスを閉じて開く

これは少し簡単で、あなたが持っているものとより一致しています:

Form2 form2 = new Form2();

form2.Closed += Form2_Closed;

Hide();

form2.Show();

同様に、この関数を に追加しますForm1

private void Form2_Closed(object sender, EventArgs e)
{
    Show();
}

ここで、 を呼び出す代わりHide();Form2Close();

于 2010-04-23T15:15:17.170 に答える
1

aのVisiblityプロパティをWindowに設定しHiddenて非表示にすることができます。あなたがいる場合Window1

this.Visibility = Visibility.Hidden;
Window2 win = new Window2();
win.Show();

ウィンドウを再度表示するには、単純に変更しVisibilityます。

于 2010-04-23T15:14:57.807 に答える