方法一
在子窗體中自定義乙個建構函式,引數型別是主窗體,當要顯示子窗體的時候,就用這個建構函式來例項化子窗體,然後把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子元件為...