winfrom 控制窗體間相互傳遞資料

2021-12-29 16:27:20 字數 1948 閱讀 3345

方法一

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

主窗體.cs

public class frmmain:form

複製**

子窗體.cs

子窗體.cs

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

private void button1_click(object sender,eventargs e)

}複製**

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

定義介面.cs

public inte***ce ichangetitle:

複製**

主窗體.cs

主窗體.cs

public class frmmain:form,ichangetitle

}複製**

子窗體.cs

子窗體.cs

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

private void button1_click(object sender,eventargs e)

}複製**

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

主窗體.cs

主窗體.cs

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

public partial class mainform : form

protected void formtitlechanged(string title)

private void button1_click(object sender, eventargs e)

}複製**

子窗體.cs

子窗體.cs

public partial class childform : form

private void btn_ok_click(object sender, eventargs e)

}複製**

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

主窗體.cs

主窗體.cs

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

public partial class mainform : form

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

private void button1_click(object sender, eventargs e)

}複製**

子窗體.cs

子窗體.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)

}摘自 bychentufeiyang的專欄

Qt窗體之間相互傳遞值的三種方式

才學習qt程式設計時,按公司需求編寫上位機時,遇到傳值的問題,所總結的三種方式。希望能幫到一些初學者。方式1 使用qt中的signal slot機制進行傳值 槽函式機制 乙個視窗用來接收傳遞過來的值connect 另乙個視窗傳送訊號signal 方式2 使用public形式的函式介面進行傳值 繼承 ...

兩個窗體之間的相互控制

最近遇到乙個小問題,form1中的button1 單擊後顯示 form2,在form2中進行修改後,form2關閉。重新整理form1。首先想到的肯定是呼叫form1的重新整理 顯示控制項的方法。那麼就需要在form2執行的時候,獲得form1的例項。但是總覺得這個方法不是很好,不是想要的。下面介紹...

sync 修飾符 進行父子元件間相互傳遞資料

允許prop進行雙向繫結,以this.emit update propname,newvalue 的模式觸發事件。doc.title 複製 相當於 doc.title v on update title doc.title event 複製 以在index.vue下引入childrenone子元件為...