两个form打开,如何抑制其中一个

时间:2022-04-26 11:50:26
有一个主form,就叫mainform,还有一个登陆form,就叫loginform吧

在application.run(new mainform()),这里,我是希望mainform做启动form,并且在mainform构造函数中,我构造一个loginform,希望在mainform load之前,先打开login,登陆成功后进入mainform。
在mainform构造函数中,我使用login.show(),来打开这个login form,运行后出现异常,我调试发现,在mainform构造函数走到login.show()后,不会停下来,继续走,结束mainform构造后,application引导其进入form1_load,但这个时候mainform的form1_load里面还有赖login后的信息。

如何能在login打开时,mainform抑制向下继续?

11 个解决方案

#1


你就是要做登录窗体吧。你可以把mainform.show放在login的的函数里面,然后login用hide()方法隐藏就行了。 或者更改progroms里的执行顺序。你将login放在mianform里已经违背了执行顺序了。

#2


我倒觉的,你把问题搞复杂了

程序入品定成[登录界面]就OK了

再从[登录界面]登录到[主界面]

这是正常的逻辑思路

如果在后期要想注销刚可再创建[登录界面]实例
(或)在登录后消隐界面,要注销时再显示就OK

#3


login.showdialog()

#4


在显示Mainform前先shoudialog()

#5


if(login.showdialog() == DialogResult.OK )
{
    *****
    *****
}

#6


this.hide();
if(login.showdialog()==DialogResult.OK)
{
    this.Show();
}
else
    this.close();

#7


不是都通过ID控制?

#8


个人认为还是先application.run(new login)好点,如果登陆隐藏login,把mainform show出来
至于form1_load里面还有赖login后的信息,可以通过公共类存储信息,这样mainform的closing事件要写application.exit了

#9


login.show()   ->   login.ShowDialog()
模态和非模态的区别

#10


同意qinping的观点,先让loginform启动,通过验证后启动mainform,这么做不会有问题

#11


写成:  Application.Run(new login());
                if ("条件成立") Application.Run(new mdimain());

#1


你就是要做登录窗体吧。你可以把mainform.show放在login的的函数里面,然后login用hide()方法隐藏就行了。 或者更改progroms里的执行顺序。你将login放在mianform里已经违背了执行顺序了。

#2


我倒觉的,你把问题搞复杂了

程序入品定成[登录界面]就OK了

再从[登录界面]登录到[主界面]

这是正常的逻辑思路

如果在后期要想注销刚可再创建[登录界面]实例
(或)在登录后消隐界面,要注销时再显示就OK

#3


login.showdialog()

#4


在显示Mainform前先shoudialog()

#5


if(login.showdialog() == DialogResult.OK )
{
    *****
    *****
}

#6


this.hide();
if(login.showdialog()==DialogResult.OK)
{
    this.Show();
}
else
    this.close();

#7


不是都通过ID控制?

#8


个人认为还是先application.run(new login)好点,如果登陆隐藏login,把mainform show出来
至于form1_load里面还有赖login后的信息,可以通过公共类存储信息,这样mainform的closing事件要写application.exit了

#9


login.show()   ->   login.ShowDialog()
模态和非模态的区别

#10


同意qinping的观点,先让loginform启动,通过验证后启动mainform,这么做不会有问题

#11


写成:  Application.Run(new login());
                if ("条件成立") Application.Run(new mdimain());