这个窗体如何关掉呢

xmmandy 2009-04-24 03:46:35
winform下 希望在打开游戏界面的时候关掉登陆窗体 代码大致这样的:
if (num > 0)
{

Games.Show();
login.Close();


}
可是登陆到游戏界面后,登陆窗体login.cs并没有被关掉 该怎么做呢
...全文
164 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
yeaicc 2009-04-24
  • 打赏
  • 举报
回复
登陆界面不要是启动对象,把它做成类似闪屏一样的窗体就可以了。
按楼上的做吧,那样是可以的。
marvelstack 2009-04-24
  • 打赏
  • 举报
回复

void Game_Load(object sender, EventArgs e)
{
Login login = new Login();
login.ShowDialog();
//logSucess为登陆窗体login的公共变量,如果通过验证则为true;否则为false;
if (login.logSuccess == false)
{
//如果没有通过验证,则关闭Game窗体,或退出程序
Application.Exit();
//this.Close();
}
}
marvelstack 2009-04-24
  • 打赏
  • 举报
回复
可以参考12的做法,也可以在Game窗体初始化时调用login.ShowDialog();
在Game的Load事件中使用下面代码,
void Game_Load(object sender, EventArgs e)
{
Login login = new Login();
login.ShowDialog();
//logSucess为登陆窗体login的公共变量,如果通过验证则为true;否则为false;
if (login.logSuccess == false)
{
//如果通过验证则运行Game窗体
this.Close();
}
}
deng520159 2009-04-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 iniaow3 的回复:]
在main函数中先运行Login窗体,注意是login.ShowDialog(),在Logion声明一个公共变量loginSuccess判断是否登录成功,如果成功就运行Game窗体。做法如下:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//login登陆窗体
Login login = new Login();
login.ShowDi…
[/Quote]
这个是可行方法,我以前也这么用, 根据道理来说,如果一个不是主窗体form 要关闭, 调用他的析构函数就可以了,
饅頭 2009-04-24
  • 打赏
  • 举报
回复
好好看看多线程吧。
你可以通过传递参数,
关闭窗体。
iniaow3 2009-04-24
  • 打赏
  • 举报
回复
在main函数中先运行Login窗体,注意是login.ShowDialog(),在Logion声明一个公共变量loginSuccess判断是否登录成功,如果成功就运行Game窗体。做法如下:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//login登陆窗体
Login login = new Login();
login.ShowDialog();
//logSucess为登陆窗体login的公共变量,如果通过验证则为true;否则为false;
if (login.logSuccess)
{
//如果通过验证则运行Game窗体
Application.Run(new Game());
}
}
格拉 2009-04-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 createTim 的回复:]
这里有两个类分别是两个窗口

C# code
public class main
{

public bool Log{get;set;}

public main()
{
login _login = new login()
_login.M=this;
_login.ShowDialog();
if(Log)
{
this.close();
}
}

}
public class login
{
public main M{get; set;}

public bool Log()
{
if(password== true && name == true)
M.Log=true;

[/Quote]顶
levinstong 2009-04-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zgke 的回复:]

this.Handle();
Games.Show();
[/Quote]
yangc_83 2009-04-24
  • 打赏
  • 举报
回复
我也碰到这个问题,用this.Hide(); 还是不爽,关的时候要关它
建议不要用登陆窗体为主窗体
把他放在game窗体的Form1_Load()函数里
在用ShowDialog()显示出来就行了!
关的时候直接关game窗体
lanruoshui 2009-04-24
  • 打赏
  • 举报
回复
学习~
createTim 2009-04-24
  • 打赏
  • 举报
回复
这里有两个类分别是两个窗口

public class main
{

public bool Log{get;set;}

public main()
{
login _login = new login()
_login.M=this;
_login.ShowDialog();
if(Log)
{
this.close();
}
}

}
public class login
{
public main M{get; set;}

public bool Log()
{
if(password== true && name == true)
M.Log=true;
else
M.Log =false;

this.close();
}
}



this.show();this.show();
xmmandy 2009-04-24
  • 打赏
  • 举报
回复
按一楼的方法:
{
this.Hide();
f.Show();
}
可以了,谢谢大家
xiaoyuzi 2009-04-24
  • 打赏
  • 举报
回复
在登陆窗体转向打开游戏界面的事件方法中
gameform frm = new gameform();
frm.show();
this.close();
注意登陆窗体不能是应用中启动的窗体,即
Application.Run(new loginform());
loginform不能关闭,他关了,程序主线程就结束了。
yulongcs 2009-04-24
  • 打赏
  • 举报
回复
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
bw555 2009-04-24
  • 打赏
  • 举报
回复
可以建个模块,从main函数启动就没这问题了
xu54647265 2009-04-24
  • 打赏
  • 举报
回复
如果你的登陆窗体是主窗体的话,是不能被关闭的。
因为一关闭,程序就结束了。
你可以把游戏窗体作为主窗体,在一开始的时候让它完全透明。
然后,如果登陆成功的话,就让登陆窗体完全透明,让游戏窗体显示出来。
或者再设计其他的方法。
主窗体在程序运行期间是不能关闭的。
关于你的问题,你可以试试把IF里面的2句对调一下。
zgke 2009-04-24
  • 打赏
  • 举报
回复

this.Handle();
Games.Show();

这样看看.

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧