C 實現Winform間的資料互動的三種方法

2022-03-07 06:09:25 字數 2218 閱讀 6199

使用.net編寫winform程式,比較常見的一種情況就是如何實現form間的資料互動,下面就簡單總結一下常見的幾種資料互動方式:

(1)修改子窗體的建構函式:簡單地說就是通過修改子窗體form的建構函式,如下所示:

public form2(string para1, arraylist list1, textbox textbox1, form form1)

上面的例子中,為子窗體form2新增了4個引數,分別是:字串para1,字元陣列list1,文字控制項textbox1和父

窗體form1,下面簡單區分一下它們各自的特點:

<1> 字串:單向的值傳遞,在子窗體中不能通過修改此引數的值來間接改變父窗體中的資料。

<2> 字元陣列:引用型傳遞,可以通過將父子窗體中不同的成員變數指向相同的陣列,即可實現變更一方,同時更新

對方的資料。

<3> 控制項:引用型傳遞,可以通過修改該控制項的資料來直接達到控制父窗體中該控制項資料的目的。

<4> 窗體:這個最直接,直接將父窗體傳遞到子窗體中,我們可以方便地在子窗體中修改父窗體中所有授權為public

的資料。

(2)給窗體新增屬性或方法:

獲取或設定擁有此窗體的窗體。若要使某窗體歸另乙個窗體所有,請為其 owner 屬性分配乙個對將成為所有者的

窗體的引用。當乙個窗體歸另一窗體所有時,它便隨著所有者窗體最小化和關閉。例如,如果 form2 歸窗體 form1

所有,則關閉或最小化 form1 時,也會關閉或最小化 form2。並且附屬窗體從不顯示在其所有者窗體後面。可以將附

屬窗體用於查詢和替換視窗之類的視窗,當選定所有者窗體時,這些視窗不應消失。若要確定某父窗體擁有的窗體,

請使用ownedforms屬性。

我們可以通過下面的方式來確定這種從屬的窗體關係:

form2 form = new form2();

form.owner = this;

form.showdialog();

或者form2 form = new form2();

form.showdialog(this);

定了從屬關係以後,我們就可以通過在form的load事件中或者通過定義public的屬性或者方法來彼此進行資料修

改操作,簡單操作如下:

form1 pareform = (form1)this.owner;   

this.listdata1 = pareform.listdata2;

(3)通過委託的方法:

相對以上兩種方法來說,這種方法可能較複雜一些,但基本思路是一樣的,需要修改的地方如下:

<1>在form2.cs中新增委託函式定義:public delegate void sendfun(string str);

<2>在form2.cs中新增委託示例:public event sendfun sendtoparent;

<3>在form2.cs中新增乙個按鈕,並新增其事件如下:

private void button1_click(object sender, eventargs e)

}

<4>在form1.cs中新增方法recvinfo()方法如下:

private void recvinfo (string str)

<5>在form1.designer.cs中的initializecomponent()方法中新增委託例項定義:

this.myform.send += new example3_form2. sendfun (recvinfo);

通過上面五步操作,即可達到form間的通訊的目的。希望這個總結能夠對大家有所幫助。

C 實現Winform間的資料互動的三種方法

使用.net編寫winform程式,比較常見的一種情況就是如何實現form間的資料互動,下面就簡單總結一下常見的幾種資料互動方式 1 修改子窗體的建構函式 簡單地說就是通過修改子窗體form的建構函式,如下所示 public form2 string para1,arraylist list1,te...

WinForm 窗體間傳遞資料

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

委託 Winform實現窗體間的傳值

軟體介面如上所示 點選接收窗體實現開啟傳送窗體,傳送窗體點選 傳送 即可傳送到接收窗體,可以實現窗體間的傳值。接收窗體的主要 開啟傳送窗體 private void btnopen click object sender,eventargs e 值傳給窗體的文字框 void getvalue str...