日期:2014-05-17  浏览次数:20853 次

打开一个窗体时引入另一个窗体
本帖最后由 foxd 于 2013-03-09 16:06:51 编辑
我在form1中用了以下代码,在打开Login窗口时把fmain窗体引入,
 frmMain fmain = new frmMain();
 fmain.Show();
 frmLogin Login = new frmLogin(fmain);
 Login.ShowDialog();
 this.Hide();

现在我在fmain窗体中用了以下代码,以便打开frmLogin窗口:
 string frmName = "frmLogin";
 Type typeForm = Type.GetType("Weighing." + frmName);    //Weighing是当前窗体的命名空间
 Form subForm = Activator.CreateInstance(typeForm) as Form;
 ......
 this.workPanel.Controls.Add(subForm);
 subForm.Show();

我需要在打开frmLogin窗体时引入fmain窗体,但不会写,请帮我修改一下,谢谢!

------解决方案--------------------
            Application.Run(new frmLogin());

登陆之后点击确定的时候show  frmMain 
------解决方案--------------------
晕!

你可以为frmMain声明一个属性,例如
public frmLogin theForm{get;set;}

然后再你的所谓form1中写:
  frmLogin Login = new frmLogin(fmain);
  Login.ShowDialog();
  frmMain fmain = new frmMain();
  fmain.theForm = Login;
  fmain.Show();
  this.Hide();

------解决方案--------------------
不过,这里的this.Hide是很诡异的。通常你应该在逻辑设计上做到位,例如
  frmLogin Login = new frmLogin(fmain);
  Login.ShowDialog();
  frmMain fmain = new frmMain();
  fmain.Closed += (s,e) => this.Close();
  fmain.theForm = Login;
  fmain.Show();
  this.Hide();
这样才能保证将诡异的窗口能够变成不诡异的。