2015-05-19 72 views
0

我有兩種形式。一個是MainForm,它是一個MDI父級,並且具有在MainForm加載時設置爲enabled = false的ToolStripFile,另一個形式是form2,它是一個MDI子級並充當我的登錄表單。如果登錄成功,ToolStripFile應該是enabled = true。我有這個代碼,但它不起作用:從另一種形式禁用控件

 private void btnLogin_Click(object sender, EventArgs e) 
    { 
     MainForm mf = new MainForm(); 
     try 
     { 
      connection.Open(); 
      OleDbCommand command = new OleDbCommand(); 
      command.Connection = connection; 
      command.CommandText = "SELECT * FROM Employees WHERE Username = @Username AND Passcode = @Passcode"; 
      command.Parameters.AddWithValue("@Username", txtUsername.Text); 
      command.Parameters.AddWithValue("@Passcode", txtPassword.Text); 

      OleDbDataReader reader = command.ExecuteReader(); 
      int count = 0; 
      while (reader.Read()) 
      { 
       count = count + 1; 
      } 

      if (count == 1) 
      { 
       Employees emp = new Employees(); 
       //emp.MdiParent = this.MdiParent; 
       //emp.Show(); 
       mf.ToolStripFile.enabled = true; 
       this.Dispose(); 
      } 
      if (count > 1) 
      { 
       MessageBox.Show("There is a duplicate in username and password."); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("ERROR: " + ex, "LOGIN"); 
     } 
     finally 
     { 
      connection.Close(); 
     } 
    } 
+0

什麼是你從這個代碼的執行,恰好?什麼不能工作?甚至顯示'mf'? (我沒有看到'mf.Show()') –

+0

您禁用了一個新創建的MainForm,它無法工作。相反,您應該將對初始MainForm的引用傳遞給「form2」。 – Robert

回答

0

您正在創建主窗體的新實例。您實際上需要使用MDIParent屬性使用當前表單的實例。

您可以使用這樣的事情在父窗體:

 public bool EnableButton 
     { 
      set 
      { 
       button1.Enabled = value; 
      } 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      button1.Enabled = false; 

      MDIChild child = new MDIChild(); 
      child.MdiParent = this; 
      child.Show(); 
     } 

在你的孩子的形式,你可以做這樣的事情:

 private void button1_Click(object sender, EventArgs e) 
     { 
      // if successful 
      (MdiParent as MDIParent).EnableButton = true; 
     } 
+1

MDIChild child = new MDIChild();這是一個新課程,還是這是一個內置的課堂? MDIChild沒有顯示在VS只有MdiChildren和MdiClient的intellisence。你能化妝嗎? – Ibanez1408

+0

Yessss!感謝丹麥人。我花了一段時間弄清楚你打算告訴我什麼,但它是值得的! – Ibanez1408