繁体   English   中英

关闭表格的C#问题

[英]C# issues with closing the form

在成功登录后切换到第二表单时,我在关闭登录表单时遇到问题。 我尝试了.close.dispose ,但登录表单无法关闭。 以下是我的代码。

namespace Lead_Management_Pro
{
    public partial class FrmLogin : Form
    {
        Form1 mainform;
        public FrmLogin()
        {
            InitializeComponent();
        }

        public void button1_Click(object sender, EventArgs e)
        {
            FrmLogin frm = new FrmLogin();
            mainform = new Form1();
            string[] v;

            OleDbConnection conn = new OleDbConnection("File Name=E:\\Vivek\\License Manager\\License Manager\\login.udl");

            try
            {
                conn.Open();

                string query = "EXEC dbo.checkuser '" + username.Text+ "', '" + password.Text+"'";
                OleDbCommand cmd = new OleDbCommand(query, conn);
                string s = Convert.ToString(cmd.ExecuteScalar());
                v= s.Split('|');
                if (v[0]=="0")
                {

                    frm.Close();
                    mainform.ShowDialog();
                }
                else
                {
                    MessageBox.Show("Please enter correct user credentials and try again");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            conn.Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}

请帮助我纠正此问题。

frm.Close()关闭您正在创建的实例。 您应该使用this.Close(); 就像您在button2_Click事件中所做的一样

更新2

FrmLogin是您的启动表单。 尝试隐藏它:

if (v[0]=="0")
{
    mainform.Show();
    this.Hide();
}

在我的一个项目中,我遇到了类似的问题。 问题在于,如果您以第一个表单的形式打开登录表单,它将被视为主要表单,并且当您关闭登录表单时,由于关闭了主表单,程序将开始关闭。

您需要做的是从Form1主表单的上下文中打开登录表单,而不是从登录表单的上下文中打开主表单。

用伪代码:

public Form1(){
    if(not logged in)
    {
        FrmLogin login = new FrmLogin();
        login.ShowDialog();//This blocks the further execution of the Form1 constructor until you're out of the window
    }
    InitializeCompent();
}

在登录表单中处理登录过程,并在登录后在其中关闭表单。它将自动继续到Form1构造函数的其余部分,并从那里打开它。 您可能希望在执行登录后检查是否已实际登录,如果未登录则将其关闭。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM