【菜鸟提问】关于运行时主窗体隐藏,显示登录窗体,登录成功后关闭登录窗体,显示主窗体。
我将入口点设置在主窗体中,然后运行,但是hide()不能写在LOAD事件中,所以,我主窗体的程序是这么写在Activated事件中
private void BCMainForm_Activated(object sender, System.EventArgs e)
{
this.Hide();
Logon logon = new Logon();
logon.show();
}
然后在登录窗体Logon中
private void Confirm_Click(object sender, System.EventArgs e)
{
BCMainForm main = new BCMainForm();
main.Show();
this.Close();
}
但这样写好像是重新打开了一个新窗体,而不是将隐藏的窗体显示。
并且,由于我还有个Closing时间
private void BCStartForm_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
DialogResult result=MessageBox.Show("确认要离开BarCode系统吗?",c.sysname+"BarCode系统提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
if(result==DialogResult.Yes)
{
e.Cancel=false;
Application.Exit();
}
else
{
e.Cancel=true;
}
}
所以在关闭的时候也就关闭了线程,整个程序就退出了。
请问,如何写,这两者的关系才能比较完美啊?
谢谢啊
问题点数:30、回复次数:9Top
1 楼usepc(usepc)回复于 2005-12-23 20:25:22 得分 10
Form1:
static void Main()
{
Login lg=new Login();
lg.ShowDialog();
if(lg.IsLogin==true)
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
else
{
Application.ExitThread();
}
}
Form2 (Login)
private bool ISLOGIN=false;
public bool IsLogin
{
get
{
return this.ISLOGIN;
}
}
private void button1_Click(object sender, System.EventArgs e)
{
if(textBox1.Text=="admin"&&textBox2.Text=="admin")
{
this.ISLOGIN=true;
}
}
Top
2 楼cc_net(念念红尘)回复于 2005-12-23 20:35:49 得分 5
我用的方法是建一个类,MAIN方法写在这个类里面,并设为程序入口点
然后在这个方法中启动登陆窗口
验证通过的话就close登陆窗口
显示主窗体Top
3 楼hao1geren(一个好人)回复于 2005-12-23 20:47:23 得分 5
Application.EnableVisualStyles();
Application.Run(new Form1());
这里是用到了 XP 主题,但是存在一个问题,那就是 用ShowDialog 显示一个窗体,关闭,再打开的时候容易出错,解决的办法是
Application.EnableVisualStyles();
Application.DoEvents();
Application.Run(new Form1());Top
4 楼crma799(不会游泳的鸭子)回复于 2005-12-26 14:07:01 得分 0
private void Form1_Load(obiect sender,System.EventArgs e){
Form2 frmLogin = new Form2();
frmLogin.ShowDialog(this);
}
这样好像就可以先出现“运行时主窗体隐藏,显示登录窗体,登录成功后关闭登录窗体,显示主窗“
private void button2 _Click(........)
{
条件。。。。
else{
thiis.DialogResult = DialogResult.ok;
}
}
这样可不可以Top
5 楼crma799(不会游泳的鸭子)回复于 2005-12-26 14:09:30 得分 0
button 是在form2 上的Top
6 楼happycharles()回复于 2005-12-26 14:45:16 得分 0
把登录窗体作为主窗体,登录ok后hide掉,new mainform,show出来Top
7 楼diablo1003(小叶)回复于 2005-12-27 09:48:27 得分 0
这个,若若的问一句啊:
usepc
FORM1里面的
static void Main()
{
}
应该写在那里啊?
在
public BCMainForm()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
里面写么?
Top
8 楼diablo1003(小叶)回复于 2005-12-27 09:51:24 得分 0
cc_net(念念红尘)
能不能将你写的那个类里面的代码贴出来给我借鉴么?感觉你的那个方法比较的好呢,但不好意思的是我的水平实在有限,还不能马上的反应,谢谢。
Top
9 楼s5689412(华君)回复于 2005-12-27 10:15:27 得分 10
类似问题都建议采用ApplicationContext,
参考下面的讨论:
http://community.csdn.net/Expert/TopicView.asp?id=4397826
http://community.csdn.net/Expert/topic/4398/4398390.xml?temp=.7976038Top




