我正在寻找与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试试运气,但不知道从哪里开始。
有任何建议/想法吗?
答案 0 :(得分:3)
(就本回答而言,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
。
方法2:每次关闭Form2
并打开新实例
这更容易,更符合您的要求:
Form2 form2 = new Form2();
form2.Closed += Form2_Closed;
Hide();
form2.Show();
同样,将此功能添加到Form1
:
private void Form2_Closed(object sender, EventArgs e)
{
Show();
}
现在,不要在Hide();
中致电Form2
,而是致电Close();
答案 1 :(得分:1)
Visiblity
的{{1}}属性可以设置为Window
以隐藏它。所以如果你在Hidden
:
Window1
要再次显示该窗口,只需更改其this.Visibility = Visibility.Hidden;
Window2 win = new Window2();
win.Show();
。