日期:2014-05-18  浏览次数:20840 次

WINFORM关于窗口的问题 退出时主窗口闪一下
我做一个通讯录
在主窗口的Load事件里显示登录的对话框  
登录系统没问题 如果取消的话 
我的事件处理代码是this.DialogResult = DialogResult.Cancel;
这样回到主窗口的Load中,我注册Application的Idle事件来
关闭主窗口 然后在Application的ApplicationExit事件中再把
Application.Idle事件注销掉 这个是MSDN文档里推荐的做法

现在有个问题 就是取消的时候 主窗口会闪一下再退出
我用this.hide隐藏主窗口也没用,麻烦各位能不能帮我看下
有什么好的办法 

其实本来用的是先显示登录对话框 然后再启动主窗口呢
但是由于使用了换肤控件 那样容易引起死锁 MDA会报告异常
所以用上面说的办法 就带来之前的问题 主窗口会闪一下再消失
麻烦各位帮忙看下
 

------解决方案--------------------
你可以在登陆窗体(假设是form1)内设定一个public static int a 变量,然后在登陆窗体退出的时候,你根据用户的登陆情况给a设定一个值,在

主窗体的load()中 form1 denglu=new form1();denglu.showdialog(); if (form1.a==数据) 然后判断你的执行,如果登陆失败,假设a=1 那么就application.close();解决。关于你用的界面插件我用的很好。

------解决方案--------------------
建议新建1个模块,里面创建一个函数Public Sub Main,在函数中先启动登录界面,然后根据返回值来判断是否启动主窗口。工程的启动对象改成“Sub Main”
------解决方案--------------------
这样回到主窗口的Load中,我注册Application的Idle事件来 
关闭主窗口
你直接在主窗口Load事件中this.Close()
------解决方案--------------------
up
------解决方案--------------------

我这样写好像没感觉到闪烁


private void FormMain_Load(object sender, EventArgs e)
{
FormLogin f = new FormLogin();
if (f.ShowDialog(this) != DialogResult.OK)
{
Close();
}
}

------解决方案--------------------
探讨

我这样写好像没感觉到闪烁


private void FormMain_Load(object sender, EventArgs e)
{
FormLogin f = new FormLogin();
if (f.ShowDialog(this) != DialogResult.OK)
{
Close();
}
}


------解决方案--------------------
建议不在主窗口中调用登录窗口,在启动主窗口前先进行登录的验证