如何正确关闭当前表格并打开新表格?
how to close current form and open new form properly?
我正在尝试关闭当前表单并在登录时打开主表单。我正在尝试按照已接受的答案 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());
}
如何在我的登录表单中实现上述代码中给出的对话框结果?实在是看不懂。
以下是我在登录表单中执行登录的方式。在按钮点击事件中。
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();
}
你的代码很好,而且可以工作,问题是你从来没有给它工作的机会,因为你从不关闭 frmLogin
。
当表单通过 ShowDialog
显示时,它们依赖于表单上的 DialogResult property being set in order for it to determine which action to take - a form will generally read this in from a 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
是自动为您设置的。
我正在尝试关闭当前表单并在登录时打开主表单。我正在尝试按照已接受的答案 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());
}
如何在我的登录表单中实现上述代码中给出的对话框结果?实在是看不懂。
以下是我在登录表单中执行登录的方式。在按钮点击事件中。
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();
}
你的代码很好,而且可以工作,问题是你从来没有给它工作的机会,因为你从不关闭 frmLogin
。
当表单通过 ShowDialog
显示时,它们依赖于表单上的 DialogResult property being set in order for it to determine which action to take - a form will generally read this in from a 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
是自动为您设置的。