在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

