2012-05-06 100 views
1

我有這樣的代碼然而,當我把它從表單中正常工作,當我打電話一樣從父它通過代碼運行沒有結果:C#子窗體不刷新

public void hideHelp() 
    { 
     //Check in db if panel1 is visible 
     SqlCeCommand checkHelp = new SqlCeCommand("Select Show_Help from Options where Opt_Id = 1", this.optionsTableAdapter.Connection); 
     if (this.optionsTableAdapter.Connection.State == ConnectionState.Closed) 
     { this.optionsTableAdapter.Connection.Open(); } 

     try 
     { 
      bool showHelp = (bool)(checkHelp.ExecuteScalar()); 

      this.panel1.Visible = showHelp; 
      this.Refresh(); 

     } 
     catch (Exception ex) { MessageBox.Show(ex.Message); } 

    } 

在主窗體我有一個切換按鈕,其代碼如下:

private void tglHelp_Click(object sender, EventArgs e) 
    { 

     if (tglHelp.ToggleState.ToString() == "On") 
     { 
      HRDataSet.OptionsRow updateHelp = hRDataSet.Options.FindByOpt_Id(1); 
      try 
      { 
       updateHelp.Show_Help = true; 
       this.optionsTableAdapter.Update(this.hRDataSet); 

       Form activeChild = this.ActiveMdiChild; 



       if (activeChild.Name == "frmAddEmployees") 
       { 
        frmAddEmployees chForm = new frmAddEmployees(); 
        chForm.MdiParent = this; 


        chForm.hideHelp(); 
       } 

      } 
      catch(Exception ex) 
      { 
       MessageBox.Show(ex.Message, Application.ProductName); 
      } 
      tglHelp.Text = "Help Panel \nOFF"; 
     }  

任何想法?

回答

1

在這段代碼

  if (activeChild.Name == "frmAddEmployees") 
      { 
       frmAddEmployees chForm = new frmAddEmployees(); 
       chForm.MdiParent = this; 
       chForm.hideHelp(); 
      } 

你打開另一frmAddEmployees並添加到MDI,但你沒有表現出來。 如果您的目的是要求由activeChild確定當前frmAddEmployees的代碼,你應該使用這樣的

  if (activeChild.Name == "frmAddEmployees") 
      { 
       ((frmAddEmployees)activeChild).hideHelp(); 
      } 
+0

你確定你tglHelp_Click的邏輯?我不能跟着它,但它似乎'如果(tglHelp.ToggleState.ToString()==「On」)'和'updateHelp.Show_Help = true'設置幫助不關閉從'tglHelp.Text =「幫助面板\ nOFF「;' – Steve

+0

感謝您的幫助好友!它工作的很好,我現在會照顧切換按鈕:D – user799920