c#窗体之间的转换问题form1和form2

我的构思是form1的用户登录界面,登录成功则进入form2。现在步很容易就实现了,但是用的隐藏form1,隐藏会占用资源吗?主要问题:form2点关闭的时候并不能结束整... 我的构思是form1的用户登录界面,登录成功则进入form2。现在步很容易就实现了,但是用的隐藏form1,隐藏会占用资源吗?
主要问题:
form2点关闭的时候并不能结束整个程序,这个问题很纠结。我用了一个判断,就是在form1上判断form2是不是close事件,结果运行的时候两个窗体同时出现。
现在我就是想关闭form2能结束整个程序。
我以前用的是form2作为登录窗体,结果更麻烦。请高手赐教!!!!
展开
 我来答
Jarhf
2013-05-23 · TA获得超过1862个赞
知道小有建树答主
回答量:1736
采纳率:25%
帮助的人:1017万
展开全部

方法一:

static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Main());//主窗体先运行
        }
private void Main_Load(object sender, EventArgs e)
        {
            Login loginFrm = new Login();
            if (loginFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {               
                //TODO:登录成功后的处理代码在这里写
                .....
                loginFrm.Close();//关闭登录窗体
            }
            else
            {}
        }
登录窗体,登录按钮事件:
 private void btnLogin_Click(object sender, EventArgs e)
        {
            //TODO: 验证用户
           //如果验证成功,则返回DialogResult.OK
            this.DialogResult = System.Windows.Forms.DialogResult.OK;
        }

方法二:

static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Login());//登录窗体先运行
        }
登录窗体,登录按钮事件:
private void btnLogin_Click(object sender, EventArgs e)
        {
            this.Hide();//隐藏登录窗体,会占用资源,不过可以忽略
            Main mainFrm = new Main();//主窗体
            mainFrm.Show();
        }
主窗体关闭事件:
 private void Main_FormClosing(object sender, FormClosingEventArgs e)
        {
            Application.Exit();//退出程序
        }
百度网友801b91b
2013-05-23 · TA获得超过8071个赞
知道大有可为答主
回答量:1152
采纳率:100%
帮助的人:1667万
展开全部
1、隐藏form1,隐藏会占用资源,不过很少,不用担心
2、关闭form2,关闭整个程序的方法:

添加一个FormClosed事件
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();//这样就可以退出整个程序
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
syht2000
高粉答主

2013-05-23 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
一般不会这样弄,而是更改program.cs,大致如下(假定Form1为登陆窗口)
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 login = new Form1();
login.ShowDialog();
if (login.DialogResult.Equals(DialogResult.OK)) //登陆成功才显示主窗口
{
Application.Run(new Form2());
}
}

然后在Form1中,点击确定后如果密码验证通过并登录成功,那么就
this.DialogResult = DialogResult.OK;

然后再关form2就没问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天下对杜甫诗k
2013-05-23
知道答主
回答量:39
采纳率:0%
帮助的人:12.3万
展开全部
我也有个这个问题 同求
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式