通過委托事件實現winform窗體之間的互相刷新


新建winform窗體Form1和Form2;

接下來要通過點擊Form2的按鈕,實現Form1界面的同步刷新。

先展示一下最終效果:

1.Form1界面如下:

 

2.點擊按鈕彈出Form2,界面如下:

3.點擊Form2按鈕彈出提示框,點擊“是”實現Form1的同步刷新:

4.Form1窗體刷新,label文本變更:

 

最終展示效果大致是這樣,很簡單,原理也很清晰,下面我們來看一下具體的實現代碼:

 

1.首先在Form2窗體中聲明一個委托事件,並在Form2點擊按鈕事件中調用委托事件。

using System;
using System.Windows.Forms;

namespace FormRefresh
{
    public partial class Form2 : Form
    {
        public delegate void RefreshDelegate();
        public event RefreshDelegate refresh;
        public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("確定刷新form1嗎?","提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
            {
                this.Close();
                this.refresh();
            }
        }
    }
}
Form2.cs

 

2.在Form1中自定義頁面刷新事件,實例化Form2窗體時調用刷新事件。

using System;
using System.Windows.Forms;

namespace FormRefresh
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();
            form2.refresh += RefreshForm;
            form2.Show();
        }

        public void RefreshForm()
        {
            this.label1.Text = "我是刷新后的label文本";
        }
    }
}
Form1.cs

 

我這邊RefreshForm方法體只實現了label的刷新,如果要刷新窗體,則如下:

public void RefreshForm()
{
    this.Init(); }

 

demo源碼獻上:點我下載~~ 

 

/****************************我是可愛的分割線********************************/

 


免責聲明!

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



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