窗體間傳遞複雜資料

2021-04-08 20:46:20 字數 792 閱讀 4253

這些辦法我感覺都不是特別好,會導致父窗體與子窗體耦合過於緊密,對任何乙個窗體的修改需要重新編譯另外乙個窗體。根據「依賴倒置」的原則,通過引入乙個結果物件,就可以避免這種緊耦合,同時也可以傳遞任意複雜的資料。如果需要在子窗體中改變父窗體狀態,也可以在這個結果物件中定義委託與事件來達到目的。我在這裡給出我的解決方案。

首先定義乙個結果物件,用來存放子窗體返回的結果。同時定義一些事件,可以讓子窗體修改父窗體的狀態。**如下:

using

system;

namespace

winparam}}

新增一子窗體建構函式,允許接收一結果物件:

private

cresult r;

public

frmchild(cresult r):

this

()

在父窗體中建立子窗體,並訂閱cresult事件:

private

void

btncallchild_click(

object

sender, system.eventargs e)

private

void

eventresultchanged(

string

s)

這樣確保父窗體知道子窗體,而子窗體不知道父窗體。父窗體改變後不需要重新編譯子窗體。同時兩個窗體都依賴於結果物件,結果物件的穩定性也決定了父窗體與子窗體關係的穩定性。下面是程式執行結果:

注:提供的**僅僅是功能演示,如果實際使用需要新增一些額外輔助**(物件釋放、取消事件訂閱等)。

窗體間傳遞複雜資料

這些辦法我感覺都不是特別好,會導致父窗體與子窗體耦合過於緊密,對任何乙個窗體的修改需要重新編譯另外乙個窗體。根據 依賴倒置 的原則,通過引入乙個結果物件,就可以避免這種緊耦合,同時也可以傳遞任意複雜的資料。如果需要在子窗體中改變父窗體狀態,也可以在這個結果物件中定義委託與事件來達到目的。我在這裡給出...

窗體間傳遞複雜的資料

之前在學校的時候沒有認真的學習winform的開發,現在就要狂補下了。1 建構函式的方法 不解釋,先看 public form2 string msg 然後再form3中就新增乙個textbox和乙個button private void button1 click object sender,ev...

post 傳遞陣列等複雜資料

之前總結了一篇關於ajax使用.a jax傳 遞陣列的 部落格,但 是每次使 用 aj ax傳遞 陣列的博 客,但是 每次使用 ajax都需要配置url datatype contenttype等,太過麻煩,於是想嘗試使用 post方法進行傳值,最近正好在專案中需要使用,做一下筆記 一 簡單型別的l...