1. 程式人生 > >Winform利用委託實現子窗體傳值給父窗體

Winform利用委託實現子窗體傳值給父窗體

首先,新建兩個窗體,父窗體Form1和子窗體Form2,新增控制元件如下。實現在子窗體的textBox中輸入字元,實時顯示在父窗體的textBox中的功能。


子窗體中程式碼:

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    //宣告一個委託,該委託有個string型別的引數。委託不一定要宣告在這裡,也可宣告在其他名稱空間中
    public delegate void Mydel(string str);
    public partial class Form2 : Form
    {
        //定義一個委託物件
        public Mydel del;
        public Form2()
        {
            InitializeComponent();
        }
        //在textBox控制元件的事件中,找到TextChanged事件
        private void textBox2_TextChanged(object sender, EventArgs e)
        {
            //呼叫委託物件,引數是子窗體的textBox中的內容
            del(textBox2.Text);
        }
    }
}
父窗體中程式碼:
using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            //在子窗體show之前,將方法賦給子窗體中的委託物件
            f2.del = textshow;
            f2.ShowDialog();
        }
        //一個方法,將內容顯示在父窗體的textBox中
        void textshow(string str)
        {
            textBox1.Text = str;
        }
    }
}
效果: