兩個windowsform之間的值傳遞

2022-07-26 02:42:07 字數 2042 閱讀 8167

在windows form之間傳值,我總結了有四個方法:全域性變數、屬性、窗體建構函式和delegate。

第乙個全域性變數:

這個最簡單,只要把變數描述成static就可以了,在form2中直接引用form1的變數,**如下:

在form1中定義乙個static變數public

intform2中的鈕扣按鈕如下:

private

void button1_click(object

這也許是個老話題了,但是今天我在用property 時卻有了新的發現。那就是如果傳遞的是類的話,那麼是按位址(引用)來傳遞的。例如如下兩個程式。假設有兩個form,form1、form2和乙個class1.cs的類檔案。form1是程式的開始窗體,通過form1 來呼叫form2 。程式如下:

class1.cs檔案的內容是

i = 9;

}public void modify( int u )

}form1中的內容是

private class1 ttt;

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

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

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

form2中的內容是:

change= value;}}

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

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

執行程式你會發現,改form1 中的textbox值,那麼form2 中change中的i 的值也會相應的變,同樣form2中change的 i 值變了,那麼form1 中的 ttt 中的 i 也相應的變了。就好像兩個form在使用同乙個資料變數一樣,為什麼呢?

經過思考,其實很簡單,原因就在於我們在使用property傳遞資料時使用了同一塊記憶體空間。

在傳遞class型別的資料時(如上),由於我們沒有new乙個新的例項,而是直接賦值,所以就相當於使用了引用,把上面的賦值過程改成下面這樣,

change = new class1();

change.i   = value.i ;}}

int    mm;

public temp ()

}在form之間傳遞時,變數   i   是兩個窗體共用的,但是mm 卻不是,其原因就是我上面講的那樣,所以利用property的這個特性,我們可以靈活的在form之間傳遞我們想變和不想變的值。

第三個方法是用建構函式:

form1 的button按鈕這樣寫:

private

void button1_click(object

form2 的建構函式這樣寫:

public

int i )

第四個方法是用delegate,**如下:

form2中先定義乙個delegate

public

void

intpublic

form2 中的button按鈕**如下:

private

void button1_click(object

form1中的button按鍵如下:

private

void button1_click(object

private

int點選form2的button,form1中的textbox中的值就會相應變化。

在這四個方法中,

第乙個是雙向傳值,也就是說,form1和form2改變i的值,另一方也會受到影響。

第二個方法可以單向也可以雙向傳值。

第三個方法是form1->form2單向傳值。

第四個方法是form2->form1單向傳值。

以後有新的方法我再補充,還有乙個就是用event,和delegate差不多,在這裡就不說了。

Windows Form父子兩個窗體之間的傳值測試

1 先看測試的效果圖 2 全部的 1 using system 2using system.windows.forms 34 namespace windowsforms513 public actiondoinvokep 14private void parentform load object ...

windows form 窗體 之間傳值

申明 來自網際網路 在windows form 之間傳值,我總結了有四個方法 全域性變數 屬性 窗體建構函式和 delegate 第乙個全域性變數 這個最簡單,只要把變數描述成 static 就可以了,在 form2 中直接引用 form1 的變數,如下 在form1 中定義乙個 static 變數...

漫步於兩個心靈之間

最近在網上碰到一和我幾乎用乙個鼻孔出氣的人,才第一次體會到王力巨集的那句歌詞 我還沒說可惜 你已經在嘆氣 不可思議的默契 驚嘆彼此心靈相似的同時,也享用了那份獨到的快樂。說實話我戀愛過,但即使我的戀人也不曾這樣和我心有靈犀一點通。就這樣漫步在兩個心靈間,像靜靜的湖面.也許網路並不能保證什麼,尤其是人...