如何关闭当前表单并正确打开新表单?

时间:2015-01-26 12:50:37

标签: c# winforms

我试图关闭当前表单并在我的登录中打开主表单。我试图按照接受的答案中给出here。这就是我修改Program.cs的方法。登录表格工作正常。它会打开登录表单。但是当我登录如何显示主?如何使用此对话框结果在我的登录表单中显示main。

  static void Main()
    {

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        using (var login = new frmLogin())
        {
            if (login.ShowDialog() != DialogResult.OK) return;
        }

        Application.Run(new frmMainAdmin());  
   }

如何在登录表单中的上述代码中实现此Dialog结果?我真的不明白。

以下是我在登录表单中执行登录的方法。在按钮点击事件中。

        SqlDataReader reader = new loginUserOP().userLogin(txtUserID.Text, txtpwd.Text);
            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    LoggedUserInfo.lguserfname = (String)reader[0];
                    LoggedUserInfo.lguserlname = (String)reader[1];
                    LoggedUserInfo.lgusercategory = (String)reader[2];
                    LoggedUserInfo.lguserloginid = (String)reader[3];
                    LoggedUserInfo.lguserid = (int)reader[4];
                }
                reader.Close();
                }

1 个答案:

答案 0 :(得分:1)

你拥有的代码很好,并且可以工作,问题是你永远不会给它机会工作,因为你永远不会关闭frmLogin

当表单通过ShowDialog显示时,他们依赖于设置的DialogResult属性,以便确定要采取的操作 - 表单通常会从button control中读取此内容在表格上。您可以在设计时设置此项,但是,您需要在之前验证,因此您需要执行类似

的操作
private void btnLogin_Click(object sender, EventArgs e)
{
    using (var reader = new loginUserOP().userLogin(txtUserID.Text, txtpwd.Text))
    {
        if (reader.HasRows)
        {
            while (reader.Read())
            {
                LoggedUserInfo.lguserfname = (String)reader[0];
                LoggedUserInfo.lguserlname = (String)reader[1];
                LoggedUserInfo.lgusercategory = (String)reader[2];
                LoggedUserInfo.lguserloginid = (String)reader[3];
                LoggedUserInfo.lguserid = (int)reader[4];
            }
            // remove the modal dialog and let the application start
            this.DialogResult = DialogResult.OK;
        }
    }
}

您还应该注意到,点击frmLogin右上角的红色X会导致应用程序失效,因为DialogResult.Cancel会自动为您设置。