2010-06-25 74 views
5

我有一個小應用程序,可以在對數據庫進行更改時創建警報。 我在彈出的警報表單中有幾個選項。
其中一個選項打開另一個表單(子表單),詢問用戶以獲取更多信息。從另一個表格中關閉一個表單?

當子窗體從用戶獲得必要的信息時,我希望它關閉以及父窗體。到目前爲止,我只知道如何關閉子表單,而不是父表單。

Parent form > Opens child form 
Child gathers information > User clicks ok in child > child closes, parent closes 

^這就是我想要

我只是沒有腦力去思考如何通過溝通形式完成關閉父形式是什麼。

任何幫助將不勝感激。其實,這將是超級讚賞。如果我能學會如何讓自己的表格互相交流,我確實會造成很多傷害(以8D的方式)。

回答

1

試試這個在父窗體:

using (var childForm = new ChildForm()) 
{ 
    if (childForm.ShowDialog() == DialogResult.OK) 
    { 
     Close(); 
    } 
} 

你的孩子形式應通過點擊按鈕,返回的DialogResult(OK或取消)和/或在設計器中設置AcceptButton和CancelButton屬性。

+0

如果子窗體將要向父窗體返回大量信息,我更願意讓子窗體的類定義一個靜態方法,該方法創建一個子窗體,對其執行ShowDialog,將適當的信息從它複製到返回數據對象,銷燬表單並返回數據。在這種情況下,子窗體的構造函數可以是受保護的,或者如果該類不可繼承,則是私有的。 – supercat 2010-06-25 20:15:06

+0

我將一個業務對象傳遞給子窗體,並讓它對該對象進行更改,或者更典型地將數據作爲子窗體上的一個屬性公開。 – 2010-06-25 20:24:11

6

在父窗體,你可以做這樣的事情:

ChildForm f = new ChildForm(); 
f.FormClosed += (o,e) => this.Close(); 
f.Show(); 
+0

@Justin,我得到一個委託()不能帶0參數錯誤... – sooprise 2010-06-25 20:05:39

+0

@BFree,你的解決方案工作完美,非常感謝! :D – sooprise 2010-06-25 20:06:01

+1

這不允許用戶取消他們在子表單中執行的任何操作。 – 2010-06-25 20:07:40

相關問題