2011-07-12 30 views
0

假設我們有一個具有不同控件的表單。讓我們說一個文本框和一個chkbox。如果用戶鍵入內容並更改檢查狀態,我希望通過關閉表單並再次打開表單,我可以在關閉之前(而非設計狀態)看到表單的狀態。我需要這個在大約50個不同的控件的窗體上實現。你能給我一個提示嗎?順便說一句,我在C#中編程。如何加載表單並加載用戶所做的更改?

+0

ASP.NET,WinForm或WPF? –

+0

你在說winforms,WPF,webforms,..? – ChrisWue

回答

1

編輯:新建答案:

Recursively find all child controls of the form that are TextBox and CheckBox並保存(在詞典[名稱,值]或文件或數據庫,你的選擇)。然後,當需要再次顯示錶單時,請反轉該過程。通過孩子進行遞歸,並從列表中找到以前的控件值。如果您的舊文件不包含該值,請使用默認值(不要設置Text/Checked屬性)。

原來的答案: 防止形式從真正關閉,所以在表格

protected override OnClosing (CancelEventArgs ea) 
{ 
    ea.Cancel = true; 
    this.Hide(); 
} 

然後,當你需要再次展現形式,

myForm.Show(); 

這正是保留一切,因爲它是。

+0

謝謝,但我需要的是以某種方式保存表單。由於我需要獲得用戶以下選項之一:1.創建新的2.編輯現有的。表單實際上獲得了運行模擬的調整,所以每次都很難調整偏好。未來還應該加載不同的調整。 – Amir

+0

@Amir,我提出了一個新的答案。 –

+0

是的,這將有所幫助。然而,我有,用戶定義的控件和用戶填充的組合框,並且不同的控件之間有不同的事件交互。我正在考慮序列化。有沒有什麼能夠簡單地將表單寫入文件中? – Amir

1

我認爲這樣做的正確方法是定義一個包含表單所需的所有信息的數據模型。然後你可以堅持這個數據模型(數據庫,XML,...)並再次加載它。當您打開表單並且當前用戶尚未完成表單時,則可以根據數據模型填寫表單值。這從視圖中分離出您的數據(我認爲您實際上對您的業務邏輯感興趣)。您可能想看看Model-View-Presenter設計模式。