我试图关闭当前表单并在我的登录中打开主表单。我试图按照接受的答案中给出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();
}
答案 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
会自动为您设置。