2

我创建了一个两个表单loginformmainform登录表单是我的启动程序,它验证用户名和密码是否正确然后它将打开主表单但问题是在主表单打开后登录表单仍然在主表单的后面.

在我 btnSubmit_Click的中,我loginform尝试了不同的命令this.Hide(),,,,也在加载时的主窗体中,我也执行这些命令来关闭它,this.Close()但它仍然存在,我无法移动它或手动关闭它。this.Disposed()loginform

loginform是我的启动程序。

static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        public static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new frmLog());
        }

请帮我解决这个问题。

4

4 回答 4

1

一个简单的解决方案是将您的登录表单设置为变量并使用登录结果设置公共属性,然后在您的主表单上执行另一个 Application.Run,​​就在您的 Application.Run 在您的登录表单上。您要么必须在登录表单上调用 close 方法,要么设置 dialogresult 属性以关闭登录表单并移至主表单。

于 2013-04-15T02:37:10.467 回答
1

如果您要再次使用登录表单,那么您应该只隐藏登录表单。

mainform mf = new mainform();
mf.Tag = this;
mf.Show();
this.Hide();

并再次显示登录表单

var log = this.Tag as frmLog;
log.Show();
于 2013-04-15T02:41:01.217 回答
1

只需在验证用户凭据后创建一个新对象并隐藏前一个对象,如下所示:

private void btnLogin_Click(object sender, EventArgs e)
{
    //after successfull validation 
    mainform objMainform = new mainform();
    objMainform.Show();
    this.Hide();
}
于 2013-04-15T02:51:55.543 回答
1

我认为 hide 不是这种工作的好命令..试试这个..

这是为 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();
        }
于 2015-12-05T12:04:34.580 回答