窗体的显示问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 11:04:21
private void frmMain_Shown(object sender, EventArgs e){
frmLogin Login = new frmLogin();
Login.ShowDialog();
}

这样在主窗口上显示了一个 登陆窗口

登陆时候 如果 用户名或密码出错就 MessageBox.Show();

但是登陆窗口也就没了.

直接进主窗口了,没有在给你第2次机会去输入正确的用户名和密码.

如果是循环那么textBox里面的字符串也还是你刚才输入的那样的 多少次都是错误的.连改的机会都没有就 给你PASS了.

要是用Appliction.Run();的话==>这个用多线程弄的.
这达不到我想要的效果.

这该怎么办呢?各位大侠们!
怎么控制呢? ShowDialog 这个能控制他的返回值?
需要怎么设置呢?

kadbbz大大:您的这种方法是[错误了在显示].我想要地是登陆窗口登陆时出错了,它还是在,不是自己在打开一次的方式.

ShowDialog的返回值是DialogResult类型,这个值可以在被弹出的窗体的FormDialog属性中设置。
你的这个需求的建议解决办法如下:
1. 主窗体
private void frmMain_Shown(object sender, EventArgs e)
{
DoLogin();
}

private void DoLogin()
{
frmLogin Login = new frmLogin();
if (Login.ShowDialog()!= DialogResult.OK)
{
MessageBox.Show("用户名或密码出错");
DoLogin();
}
}

2.接受密码输入的窗体(DoAuthenticationCheck是验证用户名密码的逻辑,合法则返回True)
private void btnOk_Click(object sender, EventArgs e)
{
if(this.DoAuthenticationCheck())
{
this.DialogResult = DialogResult.OK;
}
else
{
this.DialogResult = DialogResult.No;
}
this.close();
}

在LoginForm里面自己控制LoginForm的返回值,密码对了就返回OK, 不对返回别的,然后外面判断不是ok就再显示Login