2012-12-18 44 views
0

運行我有三個窗口的形式,我在form1一個按鈕,並在form2, 一個按鈕,如果在form1按鈕被點擊,那麼就說明form2有什麼屬性知道它的形式在後臺

form2 f2 = new form2(); 
f2.show(); 

form1仍然在後臺並且可見。在form2上還有一個按鈕。當點擊該按鈕時,會發生form2正在後臺運行並顯示form3的相同事件。當顯示form3我想隱藏form1

我該怎麼做?有什麼財產可以幫助我知道哪些表單正在後面運行?

回答

1

您可以使用Application.OpenForms集合來迭代打開的窗體。
然後檢查的Form1名稱,你可以嘗試Hide

foreach(Form f in Application.OpenForms) 
{ 
    if(f.Name == "Form1") 
    { 
     f.Hide(); 
     break; 
    } 
} 
1

您可以檢查您的形式具有焦點

bool foc = formX.Focused; 
1

您可以使用:Application.OpenForms

0

是的,你可以使用Application.OpenForms財產找到應用程序的所有打開的窗體的集合。

另一種解決方案是可以通過父窗體參數調用方式。 例如:Form2父爲Form1,對於Form3父ID Form2

1

Form2當它打開Form3應該觸發一個自定義事件。 Form1 shoudl在顯示Form2時訂閱該自定義事件,然後Form1可以將自己隱藏在該事件處理程序中。

public class Form2 
{ 
    public event Action Form3Opened; 

    public void Bar 
    { 
     Form3 other = new Form3(); 
     Form3Opened(); 
     other.Show(); 
    } 
} 

public class Form1 
{ 
    public void Foo() 
    { 
     Form2 other = new Form2(); 
     other.Form3Opened +=() => Hide(); 
     other.Show(); 
    } 
} 
+0

不錯但是我的情況很複雜。感謝提供知識 –

相關問題