2015-04-28 129 views
0

我有3種形式。第二個是顯示幫助,第三個是模態對話框。從第三種形式打開第二種形式

在Form1我:

Form2 HelpForm = new Form2(); 
Form3 EditForm = new Form3(); 

而且只是做一個幫助菜單:

HelpForm.Show(); 

我想也顯示HelpForm從Form3控制。我怎樣才能做到這一點?

+2

你就不能實例化一個'HelpForm'在'事件處理程序Form3'? –

回答

0

在EditForm的構造函數中傳遞HelpForm對象,並將其分配給私有變量。在需要時使用變量調用show。

Form2 HelpForm = new Form2(); 
Form3 EditForm = new Form3(HelpForm); 
..... 
EditForm.ShowHelp(); 

隨着Form3:

Class Form3 
{ 
    private Form2 helpForm = null; 

    public Form3(Form2 HelpForm) 
     { 
      helpForm = HelpForm; 
     } 

     public void ShowHelp() 
     { 
      helpForm.Show(); 
     } 
    } 
+0

非常感謝您的答覆。 –

+0

事實上,我意識到將EditForm打開爲模態是不夠的。我需要在編輯時諮詢幫助,並且不可能在EditForm和Form1以上的位置安裝HelpForm。我將它作爲非模態打開,只是在Form1打開時禁用某些命令,所以「幫助」菜單始終可用。 –

1

幫助是一種全球性(如果你的應用程序的增長),它應該是任何地方訪問。所以也許一個(單獨)你的幫助單身人士可以幫助!從任何地方

class Help 
{ 
    private static Form helpForm = null; 
    static void ShowHelp { 
    if (helpForm == null) 
     helpForm = generateHelpForm(); //TODO implement 

    helpForm.Show(); 
} 

訪問它...

// somewhere in formx 
Help.ShowHelp(); 
0

作爲一個選項,您可以使用Application.OpenForms

FormCollection fc = Application.OpenForms; 

if (fc.OfType<Form3>().Any()) 
{ 
    fc.OfType<Form3>().First().Show(); 
} 
相關問題