优化上一篇写的委托事件,用事件可以实现跨窗体调用方法

本文详细讲解了如何在Windows应用中实现主窗体(mainFrm)与明细窗体(mxFrm)之间的事件交互,包括如何声明、触发和接收事件,以及如何在主窗体改变明细窗体内容和反之的操作。通过实例代码展示了事件驱动编程在多窗体间协作中的应用。
摘要由CSDN通过智能技术生成

上一篇
没有讲明白
两个窗体,mainFrm主窗体
mxFrm明细窗体

当有一个需求是这个的(“主窗体打开明细窗体,点击主窗体的按钮,改变明细窗体的东西”)
界面是这样的,后面有源码
在这里插入图片描述

  public partial class mainFrm : Form
 {
     //声明事件
     public static event Action addTxtEvent;
     public mainFrm()
     {
         InitializeComponent();
     }

     private void Form1_Load(object sender, EventArgs e)
     {
         mxFrm frm = new mxFrm();
         frm.Show();
     }

     private void btnMsg_Click(object sender, EventArgs e)
     {
         addTxtEvent();
     }
 }

在这里插入图片描述

public partial class mxFrm : Form
    {
        int i;
        public mxFrm()
        {
            InitializeComponent();
            //注册事件
            mainFrm.addTxtEvent += Form1_addTxtEvent;
        }

        private void Form1_addTxtEvent()
        {
            AddTxt();
        }

        public void AddTxt()
        {
            i++;
            listBox1.Items.Add($"这是第{i}句话!\r\n");
        }
    }

点击主窗体,然后明细窗体的listBox就会出现文本,从而实现夸窗体事件
在这里插入图片描述这个实例还可以反转一下,改一下需求

主窗体打开明细窗体,点击明细窗体里的按钮,改变主窗体的东西
那么要怎么实现呢
首先页面布局一样,只是代码要改一下

public partial class mainFrm : Form
    {
        int i;
        public mainFrm()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            mxFrm frm = new mxFrm();
            frm.Show();
            frm.addTxtEvent += Frm_addTxtEvent;
        }

        private void Frm_addTxtEvent()
        {
            AddTxt();
        }

        public void AddTxt()
        {
            i++;
            listBox1.Items.Add($"这是第{i}句话!\r\n") ;
        }
    }
  public partial class mxFrm : Form
    {
        public event Action addTxtEvent;
        public mxFrm()
        {
            InitializeComponent();
        }
        private void btnMsg_Click(object sender, EventArgs e)
        {
            addTxtEvent();
        }
    }

在这里插入图片描述
通过这个小Demo有没有总结什么主要

事件声明和使用是在一边的(要操作的一边)
方法和注册是在另一边(要被改变的一边)
有什么补充的可以留言,有些坑可能我还没看到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Izrj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值