c#如果点击窗体2中的按钮 刷新窗体1

rtc#如果点击窗体2中的按钮 刷新窗体1,代码该怎么写,求个参考

其实对于C#的Winforms桌面应用程序来说,跨窗体传值已经是个老生常谈的问题了,使用委托&事件可以实现。先看效果:

img

我也写了几篇关于C# Winforms应用使用委托和事件实现跨窗体传值的文章,供参考:

此回答使用的是Action的实现方案。

窗体一代码:

namespace WinFormsApp2.Forms
{
    public partial class Form6 : Form
    {
        public Form6()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            var fm = new Form7();
            fm.UpdateMessage = (message) =>
            {
                label1.Text = message;
            };
            fm.ShowDialog();
        }
    }
}

窗体二代码:

namespace WinFormsApp2.Forms
{
    public partial class Form7 : Form
    {
        public Form7()
        {
            InitializeComponent();
        }

        public Action<string> UpdateMessage;
        private void button1_Click(object sender, EventArgs e)
        {
            var message = $"这里来看窗体二的消息,现在时间是:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}";
            UpdateMessage?.Invoke(message);
        }
    }
}

发消息,或者记录那个窗体的实例,调用他的刷新方法。