2014-10-08 61 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