2014-10-08 69 views
0

我在成功登录时切换到第二窗体时关闭登录窗体时遇到问题。我试过.close.dispose,但登录表单不会关闭。以下是我的代码。关闭窗体的C#问题

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(); 
     } 
    } 
} 

请帮我解决问题。

+0

你可以用给定的错误编辑你的文章吗? – 2014-10-08 09:07:54

+0

@NicolasPierre谢谢你的回复。我没有收到任何错误,但是当我切换到主窗体时,登录表单不会关闭。 frm.close()不工作 – user2614235 2014-10-08 09:09:07

回答

3

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

更新2

FrmLogin是你的启动形式做了一个。尝试隐藏它:

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

感谢您的回复.this.close正在关闭这两种形式,即登录和主窗体 – user2614235 2014-10-08 09:14:12

+0

@ user2614235尝试'mainform.Show; this.Close();' – 2014-10-08 09:16:21

+0

它不起作用 – user2614235 2014-10-08 09:18:19

0

我在我的一个项目中有类似的问题。问题是,如果你打开登录表单作为你的第一个表单,它将被视为主表单,当你关闭它时,程序开始关闭,因为你关闭了主表单。

您需要做的是从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构造的其余部分,打开它通过那里。执行登录后,您可能想要检查是否实际登录,如果不是,请关闭。

+0

感谢您的回复 – user2614235 2014-10-08 09:54:37