2016-05-24 39 views
-3

所以我有2種形式:C#的WinForms - 在Form2按鈕,隱藏Form1中

  • Form1中
  • 窗體2

有Form2上的按鈕時,我想有單擊時隱藏Form1。在窗體2

var mainFrm = new Form1(); 
mainFrm.Hide(); 

按鈕單擊按鈕,從這個什麼都不做。我顯然缺少一些東西,但似乎無法弄清楚。

任何幫助絕對讚賞!

+0

爲什麼要創建Form1的新實例var mainFrm = new Form1();'?如果您的意圖是隱藏已經顯示的Form1,那麼您需要獲取已經存在的表單的句柄並調用Hide()。 – GER

回答

0

如果form1已經存在於頁面中,那麼爲什麼還需要重新初始化它?只需將可見狀態設置爲false即可隱藏它。

mainFrm.Visible = false; 
0

沒有看到更多的是很難回答的代碼,但你絕對需要引用舊Form1這已經是可見的,隱藏它。您正在創建一個新表單並隱藏它。

0

您必須定義您的Form2類來存儲對主窗體的引用。

public partial class Form2 : Form 
{ 
    /* reference to the main form will be stored here */ 
    private Form1 _mainForm; 

    public Form2(Form1 mainForm) 
    { 
     InitializeComponent(); 
     /* Initialize the main form field */ 
     this._mainForm = mainForm; 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     /* Set the main form visibility to false */ 
     _mainForm.Visible = false; 
    } 
} 

現在,當您創建的窗體2的實例就是主要形式添加到構造:

/* Show the form2 */ 
_form2 = new Form2(this); 
_form2.Show(); 

注:將指創建窗體2物體的形式。

0

您可以在Form1中創建一個靜態表單類型屬性,並在Form1顯示時對其進行設置,然後用它來隱藏表單 以下代碼適用於我。

private void button1_Click(object sender, EventArgs e) 
    { 
     var objForm1 = new Form1(); 
     Form1.Fom1ref = objForm1; 
     objForm1.Show(); 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     Form1.Fom1ref.Hide(); 

    } 

這裏是應該在Form1中設置的屬性。

public static Form Fom1ref { get; set; }