2013-01-31 45 views
1

我試圖用一個非常廣義的函數來設計我的C#winform應用程序,以自動遍歷所有表單元素並將它們的狀態/值保存在文本文件中,以便稍後加載它。我希望它是非常普遍的,所以在未來的項目中重用這些代碼會很麻煩,因爲它不會嚴重依賴於具體細節。我想保存的表單元素是文本框,組合框,數據網格視圖,列表框以及這些。我想保存他們的價值觀和關於他們的一切。C#保存並加載所有表單元素?

我正在做的一種方法是遍歷每個可能的表單元素,然後檢測每個類型,然後創建相應的c#代碼以重新創建其值('tboxmine.value =「blue elephant」' ),然後將代碼寫入文件,以便我可以從文件加載代碼並使用CSCcompiler執行它。我的代碼到目前爲止似乎沒有正常工作,我懷疑這個編譯器是否在內運行代碼我的應用程序(我認爲它可能會創建一個新的線程?),它似乎就像有這可能是一個更簡單直接的方法。

+0

[這](http://stackoverflow.com/questions/653284/get-available-controls-from-form-using-c-sharp)和[this](http://stackoverflow.com/questions/3419159/how-to-get-all-child-controls-of-a-winform-of-a-specific-type-button-textbox)應該讓你開始沿着正確的道路前進。 – jeuton

回答

0

這似乎有點像反向「最佳實踐」方法。如果你不知道數據綁定,我建議你看看。

基本上,您可以創建類來表示數據,並使用數據綁定將控件與對象相關聯。控件將自動顯示正確的值並允許用戶更改它。如果用戶已更改該值,則會自動更新您的對象。

要保存數據,您可以使用某種序列化方式將對象存儲在文件中。加載時,你讓串行器重建你的類結構和(最好的情況下)你很好。

這不正是你問什麼,但我認爲這是你可以用好;-)

N.B:未控制的完整的狀態保存。例如在文本框中,文本將被保存,但BackColor不會。

爲了讓你開始看這個教程:http://www.codeproject.com/Articles/24656/A-Detailed-Data-Binding-Tutorial