在word軟件中,常常會使用查找功能,當點擊查找時查找界面不會消失,但是會在文檔中查找到需要的內容。在設置字體大小或者是顏色的時候會有個應用按鈕或者是預覽按鈕,這個時候會對文檔的內容進行修改但是不會關閉窗口,這兩種情形就是子窗體控制父窗體的兩種形式,怎樣去解決這種問題呢,這里采用的是事件的相互訂閱。
1、新建工程,創建兩個窗體,form1和form2
2.顯示子窗體的代碼如下:
private void button1_Click(object sender, EventArgs e) { Form2 frm = new Form2(this);//傳遞窗體1指針 frm.Show(this);//窗體不會置於父窗體的外邊 }
窗體2構造函數添加參數
public Form2(Form1 frm)//傳遞窗體1,為綁定窗體1的事件做准備 { InitializeComponent(); }
3.父窗體定義事件,子窗體訂閱事件
父窗體定義事件,修改子窗體
public delegate void changetxt(string text); public event changetxt changetxt_event;
子窗體訂閱
public Form2(Form1 frm) { InitializeComponent(); frm.changetxt_event += new Form1.changetxt(frm_changetxt_event); } void frm_changetxt_event(string text) { textBox1.Text = text; }
4.子窗體定義事件,父窗體訂閱事件
子窗體定義事件
public delegate void changetext(string text); public event changetext changetext_event;
父窗體訂閱事件
private void button1_Click(object sender, EventArgs e) { Form2 frm = new Form2(this); frm.changetext_event += new Form2.changetext(frm_changetext_event); frm.Show(this); } void frm_changetext_event(string text) { textBox1.Text = text; }
5.相互觸發事件實現窗體通信
private void button1_Click(object sender, EventArgs e) { changetext_event(textBox1.Text); }
6.最終效果
7.代碼截圖
form1.cs
form2.cs