在MainForm中的按钮点击事件showDialog了ValidateForm窗体,在ValidateForm窗体的按钮点击事件里调用this.Close();方法的时候MainForm同时也关闭了,麻烦帮忙解释一下什么原因,谢谢
解决方案 »
- Setup Factory7将FrameWork4.0打包问题
- C#调用.NET程序。
- 保存xml内容,不是保存.xml
- 如何将Office插件集成到系统??????????
- 如何做一套类似百度我知道的网站(ASP.NET)
- 关于C#的几个问题
- 请教一个算法问题!!!
- SA登陆失败啊? 没分了帮忙看看.
- 关于绿色版问题
- 如何去处datagrid最后一行的空白行?
- 如何提高HttpWebRequest并发效率
- dgvData.KeyDown-=new KeyEventHandler(dgvData_KeyDown);与dgvData.KeyDown+=new KeyEventHandler(dgvData_KeyDown);
在子窗体关闭的时候
this.MdiParent.Close();
如果不是用mdi模式窗体可以使用sendmessage postmessage等api函数
发送关闭窗体的消息
就是主界面做某个功能的时候需要验证下用户是否有权限;
showDialog了验证用户权限的窗体;
在里边的取消按钮事件里调用this.Close()方法的时候主界面奇怪的关闭了
private void 权限管理ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (validateUser())
{
AuthorizeForm af = new AuthorizeForm();
af.ShowDialog();
}
else
{
MessageBox.Show("对不起,您没有权限进行此操作!");
}
}
private bool validateUser()
{
LoginForm login = new LoginForm();
login.ShowDialog();
if (LoginForm.userID == "" || LoginForm.userID == null)
{
this.Close();
}
if (LoginForm.roleID == "1")
{
return true;
}
else
{
return false;
}
}验证窗体LoginForm中取消按钮
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
迷茫ing...................
{
LoginForm login = new LoginForm();
login.ShowDialog();
if (LoginForm.userID == "" || LoginForm.userID == null)
{
login.Close();
}
if (LoginForm.roleID == "1")
{
return true;
}
else
{
return false;
}
}
Application.Dispose()
这个事件
其实我觉得这个代码存在一定的问题:
if (LoginForm.userID == "" || LoginForm.userID == null)//为什么要在这里判断呢?
//在登录界面的按钮单击事件中判断是不是更好一些?
{
LoginForm login = new LoginForm();
login.ShowDialog();
if (LoginForm.userID == "" || LoginForm.userID == null)
{
this.Close(); // 这里的this指向主窗体,你调close当然是关程序了
}
...
}
怀疑这段代码是不是你写的,还问为什么看代码的意思就是登陆的用户ID为空,就把程序退出,好像也没什么不对,因为登陆都没有通过,显示登陆后的窗体也就没有必要了,是不安全的。另外login.ShowDialog()是阻塞的,login对话框不关闭,代码是不会往下面走的,ShowDialog完毕后,login会自己close,后面改成 login.Close()更是无稽之谈。
login.ShowDialog();
if (LoginForm.userID == "" || LoginForm.userID == null)
{
this.Close(); // 这里的this指向主窗体,你调close当然是关程序了
} 楼上的兄弟们也解释了,再强调一下 “逻辑”bug
loginfrm 当你点击 cancel 时,关闭了,但是 窗体上的值满足:
if (LoginForm.userID == "" || LoginForm.userID == null)
所以主窗体 主窗体 this.close() 了以后注意,安静的分析一下代码,切勿急躁。