我正在开发一个C#(紧凑框架)应用程序,我需要有3个表单。我可以从form1(main)转到form2,从form1转到form3。我也希望能够从form2切换到form3。 Form3必须始终相同(我需要在app启动时创建它,并在app结束时关闭它)。
在form1上,“转到表单2”按钮
form2.Show(); form2.BringToFront();
在form1上,在“转到表单3”按钮
上form3.Show(); form3.BringToFront();
在form2上,“返回表单1”
this.Hide();
在form3上,“返回表单1”
this.Hide();
但是如何从form2切换到form3?
感谢您的帮助!
答案 0 :(得分:0)
我认为这里有一个多部分解决方案。
答案 1 :(得分:0)
感谢所有的贡献!我最终构建了一个灵活的解决方案,可以扩展到多种形式。
当应用程序启动时,我会创建所有必需的表单。我有一个带有(全局)变量的辅助类,它保存当前活动的表单(我使用了int,但它可能是一个带有表单名称的字符串)。
static class GlobalClass
{
private static int m_currentActiveForm = 1;
public static int currentActiveForm
{
get { return m_currentActiveForm; }
set { m_currentActiveForm = value; }
}
}
在form1上,我已经包含了一个定时器,它每隔100ms检查一次var currentActiveForm。检测到更改时,将显示相应的表单。
private void timer2_Tick(object sender, EventArgs e)
{
if (GlobalClass.currentActiveForm != lastActiveForm)
{
switch (GlobalClass.currentActiveForm)
{
case 1:
form2.Hide();
form3.Hide();
this.BringToFront();
break;
case 2:
form2.Show();
form2.BringToFront();
break;
case 3:
form3.Show();
form3.BringToFront();
break;
}
}
}
然后,在任何表单上,要切换到新表单,我只需要为GlobalClass.currentActiveForm分配一个新值,该值在所有表单中都可见。
答案 2 :(得分:-1)
在form2上,单击"转到表单3"按钮
form3.Show();
在form3上,单击"返回表单2"按钮
this.Hide();