我正在寻找与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 试试运气,但不知道从哪里开始。
有什么建议/想法吗?
(出于此答案的目的,Form1
并Form2
表示继承自的类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();
a的Visiblity
属性Window
可以设置Hidden
为隐藏它。所以如果你在Window1
:
this.Visibility = Visibility.Hidden;
Window2 win = new Window2();
win.Show();
要再次显示窗口,只需更改其Visibility
.