學習C#不久,對於C#不同窗體之間的數據傳遞,總是處理得不好,今天,通過上網查找資料,小有心得。
C#之間不同窗體之間的數據傳遞,無非有兩種方式:
- 數據庫或文件。這是最直接的方式,需要傳遞的數據存儲在數據庫、配置文件、或者xml文件中,任何能夠訪問此數據庫或文件的窗體均能對數據進行訪問,解決了數據之間的傳遞問題。
- 參數傳遞。參數傳遞有幾種情況,分別爲:(假設父窗口爲frmMain, 子窗口分別爲frmSub1, frmSub2)
- 方式1:父窗口向子窗口傳遞參數。這種情況非常常見,也最簡單,假設父窗口frmMain要向子窗口frmSub1傳遞數據dataFromMain並在frmSub1中進行處理,則只需在子窗口中定義一個函數如:public typeReturn DoHandler(dataFromMain)即可,其調用模式爲:
- frmSub1 frmsub = new frmSub1(); frmsub.DoHandler(dataFromMain);
- 方式2:子窗口向父窗口傳遞參數。這種情況稍微複雜,子窗口要向父窗口傳遞數據,那麼必須在子窗口中保留父窗口的指針,即將父窗口作爲子窗口的一個數據成員。若子窗口frmSub1要向frmMain中傳遞數據,則frmSub1的類定義爲:
- 方式1:父窗口向子窗口傳遞參數。這種情況非常常見,也最簡單,假設父窗口frmMain要向子窗口frmSub1傳遞數據dataFromMain並在frmSub1中進行處理,則只需在子窗口中定義一個函數如:public typeReturn DoHandler(dataFromMain)即可,其調用模式爲:
-
public frmMain; public class frmSub1 { frmSub1's attribute; frmMain mfrmMain; public frmSub1(frmMain frmmain) { initiate_attribute(); mfrmMain = frmmain; } }
在構造子窗口的時候,其形式爲:frmSub1 frmsub1 = new frmSub1(this),這裏的this即是主窗口。
- 方式3:子窗口之間傳遞參數。若父窗口是容器,則只需將子窗口間的傳遞數據的控件聲明爲public即可;若不是,則可以參考方式2,通過在主窗口中定義變量來傳遞子窗口之間的數據。