我有多个表单申请。表单1是用于用户验证的登录表单。 Form1转到Form2(菜单表单)。表单2导致Form3,它只是popupform并在打开时隐藏form2。表单3转到表单4.现在从Form4,单击按钮,我需要恢复Form2而不创建新实例。我尝试使用singelton方法,如上所述获取error.Code如下。
Form1中:
private void click_Click(object sender,EventArgs e)
{
if((user.Text == username)&&(pswd.Text == password))
{ Form2 menu = new Form2();
menu.Username = user.Text;
//hides the form1
this.Hide();
menu.ShowDialog();
}
}
窗体2:
私有静态Form2实例;
public static Form2 Instance
{
get
{
if (instance == null)
{
instance = new Form2();
}
return instance;
}
}
private void button_Click(object sender,EventArgs e) {
//Hide the form2
Hide();
//Bring up your PopUp form
using (Form3 form3 = new Form3())
form3.ShowDialog();
}
Form3:
private void button_Click(object sender,EventArgs e)
{
Hide();
Form4 form4 = new Form4();
form4.Show();
}
Form4:
private void button1_Click(object sender,EventArgs e)
{
Form2 form2 = Form2.Instance;//error occured as
Mainmenu不包含Instance的引用,也没有扩展方法接受类型' Mainmenu'
类型的第一个参数 }
基本上,我想要恢复被隐藏的Form2。任何帮助都将不胜感激!谢谢
答案 0 :(得分:1)
如何跟踪Forms父母,以便您可以直接访问。 例如,在Form1中:
menu.Parent = this;
Hide();
menu.ShowDialog();
然后在Form2中调用Form3时:
using (Form3 f3 = new Form3())
{
Hide();
f3.Parent = this.Parent;
f3.ShowDialog();
}
然后当你想处理Form3时:
this.Parent.Show();
this.Parent.Focus();
this.Dispose();
根据您的需要提供尽可能多的开放表格。如果您需要退回到上一个表单,请将父级'这个'而不是' this.Parent'