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

(出于此答案的目的,Form1Form2表示继承自的类Windows.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();在内部调用Form2以将其切换回Form1.

Form2方法2:每次关闭和打开一个新实例

这更容易,更符合你所拥有的:

Form2 form2 = new Form2();

form2.Closed += Form2_Closed;

Hide();

form2.Show();

同样,将此函数添加到Form1

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

现在,而不是调用Hide();in Form2,调用Close();

于 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 回答