c#子窗體與父窗體相互控制


 

 

在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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM