1. 程式人生 > >Winform跨窗體操作控件(使用委托)

Winform跨窗體操作控件(使用委托)

namespace del frame end 步驟 打開 ring names public

Winform跨窗體操作控件是winform開發中很常見的形式,最常見且簡單有效的方式便是使用委托的方式來進行操作,下面我將通過一個小實例來說明如何使用委托跨窗體實現控件操作。

實例介紹:兩個窗體,Form1按鈕打開Form2,然後在Form2的TextBox輸入值在Form1的TextBox中顯示出來。


一、項目結構

技術分享

Form1窗體設計:

技術分享

Form2窗體設計:

技術分享

二、代碼實現

在Form2的代碼中聲明一個委托(寫在Form2類外)->

 public delegate void ChangeForm1TextBoxValue(string txt);

然後在Form2類內寫一個委托事件->

public event ChangeForm1TextBoxValue ChangeTextBoxValue;

雙擊Form2的textbox給Form2的textbox添加值變化出發事件,並在此事件中調用委托事件->

private void textBox1_TextChanged(object sender, EventArgs e)
{
          ChangeTextBoxValue(this.textBox1.Text);//執行委托實例  
}

Form2的完整代碼如下:

技術分享
using System;
using System.Windows.Forms;

namespace Test.FormsApp
{
    public delegate void ChangeForm1TextBoxValue(string txt);
    public partial class Form2 : Form
    {
        public event ChangeForm1TextBoxValue ChangeTextBoxValue;
        public Form2()
        {
            InitializeComponent();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            ChangeTextBoxValue(this.textBox1.Text);//執行委托實例  
        }
    }
}
技術分享

然後我們切換到Form1的代碼

button點擊事件實例化Form2並調用Form2的委托事件->

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.ChangeTextBoxValue += F2_ChangeTextBoxValue;
            f2.Show();
        }

在下面聲明委托事件的操作方法->

        private void F2_ChangeTextBoxValue(string txt)
        {
            this.textBox1.Text = txt;
        }

上述步驟在輸入+=號時可以雙擊兩下Tab鍵,IDE(編譯器)會自動將事件補全~

Form1的完整代碼如下:

技術分享
using System;
using System.Windows.Forms;

namespace Test.FormsApp.NETFramework461
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.ChangeTextBoxValue += F2_ChangeTextBoxValue;
            f2.Show();
        }

        private void F2_ChangeTextBoxValue(string txt)
        {
            this.textBox1.Text = txt;
        }
    }
}
技術分享

到這裏,我們的實現基本完成,下面進入測試!

三、效果測試

技術分享

技術分享

然後在Form2的textbox中輸入值

技術分享

可以看到值已經實時顯示到Form1的textbox中。

測試結果達到預期效果,項目實現成功!

一起成長,共同學習~

Winform跨窗體操作控件(使用委托)