WinForm中窗體間傳值 中間類

2022-03-07 11:28:03 字數 1028 閱讀 4053

乙個稍微複雜一點的程式一般都有兩個或者更多的窗體。有時在程式設計中,資料不僅要在同乙個窗體中傳遞,還要在窗體間傳遞,尤其是用子窗體如何改變父窗體。這個問題已經不少人問過,在群裡也為了那種方式好而爭論過,昨天雨聲.net問窗體間互操作的問題,讓我萌生就這個問題寫下這篇文章,希望對剛剛接觸c#的朋友有所幫助,有疏漏之處,也希望朋友們指正,歡迎討論。

窗體間傳遞資料,無論是父窗體操作子窗體,還是子窗體操作符窗體,無外乎以下幾種方式:

公共靜態變數;

使用共有屬性;

使用委託與事件;

通過建構函式把主窗體傳遞到從窗體中;

使用中間類。

前4種方法適用的人比較多,大家也比較熟悉,我這裡就不多說了,主要想詳細介紹一下第五種,使用中間類的方法。比如從frm1開啟frm2,在frm2中把frm1的text值改變為使用者輸入的字串,並且關閉frm2。

首先先定義乙個中間物件observe

using system;

namespace demo

set}

public observe()}}

在form2中定義乙個observe成員

private observe o_observer;

public observe observe

}在form2的事件處理中改變o_observe的strtext

private void button1_click(object sender, system.eventargs e)

在form1中例項化乙個observer成員

private observe o_observe = new observe();

在form1的事件處理函式中建立form2的例項,令form2的observe屬性等於form1的o_observe並且訂閱observe的事件

private void button1_click(object sender, system.eventargs e)

這樣,form1知道form2,form2不知道form1

該技術文章為**

WinForm窗體間傳值

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

winform窗體間傳值

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

WinForm窗體間傳值

1.通過建構函式 特點 傳值是單向的 不可以互相傳值 實現簡單 實現 如下 在窗體form2中 int value1 string value2 public form2 int value1 string value2 initializecomponent this.value1 value1 ...