2011-06-14 43 views
0

我正在製作一個應用程序,其中有一個主要的Form FormMain和一個幫助程序Form FormHelper。重新打開使用ShowDialog()顯示的封閉窗體()

爲了理解,我們舉一個例子,在FormMain中,用戶輸入訂單,用戶經常想打開FormHelper並填寫一些值。

當訂單被保存時,FormMain中的值和FormHelper一起保存。

我所做的就是讓表單助手字段中FormMain的定義:

public partial class FormMain : Form 
{ 
    FormHelper BillsForm; 
} 

而且,在構造函數中:

public FormReceiptNew(string ReceiptNo) 
    { 
     InitializeComponent(); 
     BillsForm = new BillsForm();//just once 
    } 

現在假設用戶,卻使FormMain,想要在FormHelper中輸入一些值,他/她可以按ALT + H,並且表格將使用ShowDialog()顯示,並且當它完成時,用戶將關閉FormHelper,並且同樣的過程將發生多次FormHelper所需。

我希望同一個表單打開多次的原因是用戶正在填充某些值,並且我想在下一次再次顯示FormHelper時以及完全完成用戶時保留這些值的FormMain,在FormMain的值將隨着在FormHelper.So值當用戶按下ALT + H每次被保存,下面的代碼將不起作用:

BillsForm= new FormHelper(); 
BillsForm.ShowDialog(); 

,因爲它是創建一個新形式所有舊值都將被刪除。

+3

只要不寫BillsForm = new FormsHelper(),問題就解決了。 – 2011-06-14 04:50:45

+0

@如果表單較早關閉,該怎麼辦?再次調用ShowDialog()會使它再次出現? – 2011-06-14 05:41:32

+0

@Hans,你能否提供你所寫的內容的解釋? – 2011-06-14 14:15:23

回答

0

在您的主窗體中,存儲對助手窗體的引用。 您實例化助手窗體一次(例如onLoad),並在同一個對象上繼續調用showDialog()。呼叫之間應保留所有字段。

0

如果要在關閉後將這些值存儲在主窗體中,則可以在創建時通過構造函數或設置器將這些值發回給FormHelper。從你的問題來看,它已經聽起來像你將要存儲那些你想要在主窗體中保存的值,所以在創建時設置它們不應該成爲一個問題。

+0

用戶完成後,FormMain和FormHelper中的值將保存到數據庫中。用戶在FormHelper中填充一個DatGridView,當FormHelper關閉時將值存儲在FormMain中,並在FormHelper重新創建時再次重新創建該DataGridView會很繁瑣。 – 2011-06-14 04:34:21

相關問題