我创建了两个表单loginform
和mainform
登录表单是我的启动程序,验证用户名和密码是否正确然后它将打开主表单但问题出在主表单之后打开登录表单仍然在主表单的后面。
在我btnSubmit_Click
的{{1}}中,我尝试了不同的命令loginform
,this.Hide()
,this.Close()
,也在加载的mainform中我也执行了这些命令关闭this.Disposed()
但是没有运气仍然存在,我无法移动它或手动关闭它。
loginform
是我的启动程序。
loginform
请帮我解决这个问题。
答案 0 :(得分:1)
一个简单的解决方案是将您的登录表单设置为变量并使用登录结果设置公共属性,然后在您的登录表单上的Application.Run下面的主表单上执行另一个Application.Run。您要么必须在登录表单上调用close方法,要么设置dialogresult属性以关闭登录表单并移至主表单。
答案 1 :(得分:1)
如果您要再次使用登录表单,那么您应该只隐藏登录表单。
mainform mf = new mainform();
mf.Tag = this;
mf.Show();
this.Hide();
再次显示登录表单
var log = this.Tag as frmLog;
log.Show();
答案 2 :(得分:1)
在验证用户凭据并隐藏上一个凭据后,只需创建一个新对象,如bewlo:
private void btnLogin_Click(object sender, EventArgs e)
{
//after successfull validation
mainform objMainform = new mainform();
objMainform.Show();
this.Hide();
}
答案 3 :(得分:1)
我认为对这种工作来说,隐藏并不是一个好帮手。 试试这个..
这适用于PROGRAM.CS
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
FrmMain mainForm = new FrmMain();
FrmUsername us = new FrmUsername();
if (us.ShowDialog() != DialogResult.OK)
return;
Application.Run(mainForm);
}
这用于以用户名形式输入按钮..
private void btm_Enter_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand("select count(*) from Tbl_Username where Username='" + txt_Username.Text + "' and Password='" + txt_Password.Text + "'", _sqlcon);
_sqlcon.Open();
int count = 0;
count = (int)cmd.ExecuteScalar();
if (count > 0)
{
DialogResult = System.Windows.Forms.DialogResult.OK;
}
else
{
DialogResult = System.Windows.Forms.DialogResult.None;
MessageBox.Show("UserName or password is wrong", "ENTER", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
}
_sqlcon.Close();
}