WinForm 窗體間傳遞資料

2021-06-04 07:12:38 字數 1942 閱讀 8012

子窗體.cs方法一

在子窗體中自定義乙個建構函式,引數型別是主窗體,當要顯示子窗體的時候,就用這個建構函式來例項化子窗體,然後把this指標傳進去。**如下:

主窗體.cs

public class frmmain:form

子窗體.cs
public class frmcontrol:form  //子窗體,用來控制主窗體的某些顯示!

private void button1_click(object sender,eventargs e)

}

方法二      

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

定義介面.cs

public inte***ce ichangetitle:

主窗體.cs
public class frmmain:form,ichangetitle

}

子窗體.cs
public class frmcontrol:form  //子窗體,用來控制主窗體的某些顯示!

private void button1_click(object sender,eventargs e)

}

方法三  

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

主窗體.cs

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

public partial class mainform : form

protected void formtitlechanged(string title)

private void button1_click(object sender, eventargs e)

}

子窗體.cs
public partial class childform : form

private void btn_ok_click(object sender, eventargs e)

}

方法四

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

主窗體.cs

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

public partial class mainform : form

protected void formtitlechanged(object sender, childform.titlechangedeventargs e)

private void button1_click(object sender, eventargs e)

}

子窗體.cs

public partial class childform : form

set}

}// 宣告委託

public delegate void titlechangedeventhandler(object sender, titlechangedeventargs e);

// 定義事件

public event titlechangedeventhandler titlechanged;

public childform()

private void btn_ok_click(object sender, eventargs e)

// 觸發事件的方法

protected virtual void ontitlechanged(titlechangedeventargs e)

}

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

做專案的時候,winfrom因為沒有b s的快取機制,窗體間傳遞資料沒有b s頁面傳遞資料那麼方便,今天我們就說下winfrom中窗體傳值的幾種方式。共有字段傳遞實現起來很方便,就是在窗體類中加個共有字段屬性 1 public string msg2 7 呼叫 1 public form2 form...

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