Winform跨窗體操做控件(使用委託)

Winform跨窗體操做控件是winform開發中很常見的形式,最多見且簡單有效的方式即是使用委託的方式來進行操做,下面我將經過一個小實例來講明如何使用委託跨窗體實現控件操做。學習

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


1、項目結構this

Form1窗體設計:spa

Form2窗體設計:設計

2、代碼實現code

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

 public delegate void ChangeForm1TextBoxValue(string txt);

而後在Form2類內寫一個委託事件->blog

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;
        }
    }
}

 

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

3、效果測試

而後在Form2的textbox中輸入值

能夠看到值已經實時顯示到Form1的textbox中。

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

一塊兒成長,共同窗習~

相關文章
相關標籤/搜索