2013-07-21 66 views
0

作爲一個在Windows窗體發展的一個非常第一用戶我要問一個簡單的問題,創建了第二個對象調用主窗口對象...如何從主窗口,在C#.NET

我創建了一個表格(主窗口.cs)在運行該解決方案時打開的解決方案中。

後者我創建了第二個窗體(SecondWindow.cs)並創建了一個事件,以便可以通過單擊按鈕從第一個窗口調用該窗體。當第二個窗口覆蓋第一個窗口(MainWindow.cs)時禁用。

現在我想在第二個窗口關閉時啓用MainWindow.cs。

該怎麼做......

一個簡單的解決方案,我已經是隱藏在關閉第二窗口使第一窗口的新對象,並顯示它。但是它不是MainWindow.cs和後者我認爲這是一種很好的方式,因爲已經有一個由.net框架自動爲第一個窗口創建的對象,所以爲什麼我們應該創建一個Mainwindow.cs的新對象。

碼的第一個窗口(MainWindow.cs):

private void priceControllToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     SecondWindow price = new SecondWindow(); 
     this.Enabled = false; 
     price.Show(); 
    } 

碼的第二個窗口(在關閉SecondWindow.cs)

private void price_controll_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     // what will goes here to make the MainWindow.cs to enable state 
    } 

回答

0

可以傳遞的主要形式爲業主爲第二形態

private void priceControllToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    SecondWindow price = new SecondWindow() { Owner = this }; 
    this.Enabled = false; 
    price.Show(); 
} 

然後你就可以從第二形態引用它。

private void price_controll_FormClosed(object sender, FormClosedEventArgs e) 
{ 
    Owner.Enabled = true; 
} 
+0

這是我認爲的一個好方法。 –

2

使用price.ShowDialog()顯示第二種形式爲模態對話框。主要形式將被禁用,直至關閉第二種形式:

private void priceControllToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    using(SecondWindow price = new SecondWindow()) 
     price.ShowDialog(); 
} 
+0

謝謝...它正在工作......但我的問題還沒有解決。我可以從第二種形式調用主窗口的對象。什麼是主窗口的對象的名稱由.net框架自動創建 –

+0

@ShyamaprasadPatra默認情況下沒有爲主應用程序窗體創建直接變量。如果你看看'Program.cs',你會看到'Application.Run(new MainWindow());'。你可以在這裏存儲對主窗口的引用。你也可以從應用程序打開窗體集合'var form = Application.OpenForms [0];'獲得MainWindow實例。但通常你會做相反的事情 - 以第二種形式創建事件並以主要形式訂閱該事件。當主窗體上的第二個窗體事件處理程序發生什麼事情時會被調用。 –