詳解WinForm窗體間互動的方法

2021-08-27 06:22:08 字數 2036 閱讀 6208

在窗體間傳遞資料的方法比較多:

public

class

frmmain:form

public

class

frmcontrol:form

//子窗體,用來控制主窗體的某些顯示!

private

void

button1_click(

object

sender,eventargse) }

2,我個人感覺上面的方法不是很好,雖然實現起來很簡單,只是想改變窗體的標題文字,就把整個主窗體的引用都傳遞給子窗體,這樣的方式不是很幽雅,我們用介面來改進上面的方法,這樣可以限制暴露給子窗體的功能,降低窗體之間的耦合度:

public

inte***ce

ichangetitle:

public

class

frmmain:form,ichangetitle }

public

class

frmcontrol:form

//子窗體,用來控制主窗體的某些顯示!

private

void

button1_click(

object

sender,eventargse) }

3,為了進一步降低窗體之間的耦合度,我們可以用委託來實現這個需求:

public

partial

class

childform:form

private

void

btn_ok_click(

object

sender,eventargse) }

主窗體給委託變數賦值就可以了:

public

partial

class

mainform:form

protected

void

formtitlechanged(

string

title)

private

void

button1_click(

object

sender,eventargse) }

4,也可以在子窗體中定義乙個自定義的事件,然後自定義乙個事件引數,用來傳遞你想傳遞的一些資訊:

public

partial

class

childform:form

set }

} public

delegate

void

titlechangedeventhandler(

object

sender,titlechangedeventargse);

public

event

titlechangedeventhandlertitlechanged;

public

childform()

private

void

btn_ok_click(

object

sender,eventargse)

protected

virtual

void

ontitlechanged(titlechangedeventargse)

//觸發事件的方法 }

主窗體訂閱這個事件就可以了:

public

partial

class

mainform:form

protected

void

formtitlechanged(

object

sender,childform.titlechangedeventargse)

private

void

button1_click(

object

sender,eventargse) }

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...