小菜學習Winform(五)窗體間傳遞資料

2022-01-13 05:40:53 字數 1679 閱讀 6079

做專案的時候,winfrom因為沒有b/s的快取機制,窗體間傳遞資料沒有b/s頁面傳遞資料那麼方便,今天我們就說下winfrom中窗體傳值的幾種方式。

共有字段傳遞實現起來很方便,就是在窗體類中加個共有字段屬性:

1

public

string

msg2

7 }

呼叫**:

1

public

form2(form1 f1)

2

就這麼簡單,共有字段傳遞其實只是一種可以傳遞資料的方式,但不希望採用這種方式,除非一些窗體是要做傳值的,比如一些資訊彈窗,可以採用這種方式。

構造傳遞一般是我們做專案常用的一種,就像物件傳值一樣,我們只要在構造方法中新增引數即可。

1

public form2(string

msg)26

7private

void button1_click(object

sender, eventargs e)

8

上面說的兩種方式都是由父窗體傳值給子窗體,還有一種方式是子窗體傳值給子船體,這種方式一般採用委託和事件傳遞,我們來做個示例看下。

我們先建乙個委託,引數是string:

1

public

delegate

void selectchangedhandler(string s);

在傳值中我們需要第二種方式來傳遞乙個物件集合,首先我們建乙個資料傳遞集合:

1

public

class

callobject

210 }

集合包含兩個部分,乙個是返回資訊物件,乙個是事件物件,這些其實以便子窗體呼叫來得到從子窗體中傳遞過來的資料,事件定義好了就得有事件處理方法:

1

public

void co_selectchangedevent(strings)2

我們看下父窗體的呼叫方法:

1

private

void btncallform2_click(object

sender, eventargs e)

2

這邊主要是給事件註冊,從父窗體中我們就可以推斷出,子窗體是怎麼呼叫的,通過構造方法得到物件集合,然後觸發事件就可以了。

1

private

callobject co;

2public form2(callobject cov):this()3

67private

void rb_a_checkedchanged(object

sender, eventargs e)

8

執行效果:

下面傳值給父窗體的值需要關閉子窗體,父窗體再可以得到,上面的可以實時傳遞。

窗體間傳遞資料.rar

附錄:小菜學習程式設計-winform系列(初學者)

其實上面第一種並不能說是一種好的方式,就像說模式,常用並且可以解決問題的解決方案稱為模式,開門有幾種方式:拿鑰匙開門和撬門,我們常用的是第一種,並稱為一種開門模式,並不是說第二種就不是了,只不過我們不常用,適合一些特殊的情況,比如,忘記拿鑰匙了,就是這個意思。

WinForm窗體間傳值

form1 主窗體 namespace firstdlg public string textstored set private void button1 click object sender,eventargs e private void form1 load object sender,e...

WinForm 窗體間傳遞資料

子窗體.cs方法一 在子窗體中自定義乙個建構函式,引數型別是主窗體,當要顯示子窗體的時候,就用這個建構函式來例項化子窗體,然後把this指標傳進去。如下 主窗體.cs public class frmmain form 子窗體.cspublic class frmcontrol form 子窗體,用...

winform窗體間傳值

推薦使用第6與第7方法 1.通過建構函式 特點 傳值是單向的 不可以互相傳值 實現簡單 實現 如下 在窗體form2中 int value1 string value2 public form2 int value1 string value2 在窗體form1中這樣呼叫 new form2 111...