弹出新的窗体,在关闭旧窗体的时候,把新窗体也关闭掉了,请问是为什么?谢谢
WINFORM,代码如下:
MessageBox.Show( "登陆成功 ");
MainForm myMainForm = new MainForm();
myMainForm.Owner = this;
myMainForm.StartPosition = FormStartPosition.CenterScreen;
myMainForm.Show();
this.Close();
this.Dispose();
在执行close和dispose的时候,把旧窗体也关掉了,请问是为什么?谢谢
------解决方案--------------------Sorry!
使用Application.Run只能是在线程中启动,在主线程中是不可以。
你可以在Main函数中使用ShowDialog显示第一个窗体,然后可以使用Run显示主窗体。类似如下:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 f = new Form1();
if (f.ShowDialog() == DialogResult.OK)
{
Application.Run(new Form1());
}
}
------解决方案--------------------线程问题:
第一,程序中有一个主线程,如果主线程被关闭,则所有的对象将被关闭,而主线程一般就是启动的对象.Application.Run(A窗体),A窗体就会就是主线程对象.
第二,你的这种做法可以换另一个种思路,并且可以实现反复登陆.
1.假设A这主窗体,B为登陆登陆窗体,启动中设为A窗体,Application.Run(A窗体).在A窗体的Load事件中加载B窗体(有模式),方法ShowDialog(),而该方法返回对象是DialogResult(DialogResult对象是枚举类型,包括Yes、No、OK等),如果验证通过则Yes,否则No,在A窗体中判断B窗体的返回值是Yes还是No,如果是Yes,则不做什么动作(否通过的话),否则就关才主程线。