浅谈委托

本文深入解析了委托机制在C#中的应用,通过实例演示了如何在不同窗体间使用委托进行事件传递,展示了委托如何简化多窗体间的交互,提高代码的可维护性和扩展性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  委托:我的理解是让其它窗体执行你实例的事件。

先定义 A   B  两个界面

  在 B 中 声明一个委托方法 public delegate void 委托名称();   定义在类的外边,当然里面可以传参数

  在 B 类声明 委托事件  public event 委托名称 事件名称; //说明 event 代表事件

  假如:B 中 有 一个方法 用到委托 :写法:

  if(事件名称 != null )  //判断委托不等于null
 {
   事件名称() ;  //执行委托方法
}

上面是 B 界面的写法。 那么 一下是A界面的写法:

 先定义 委托事件在 A 的 load 里面  : B.事件名称 += 事件名称方法();

 A 的方法 为 事件名称方法();

 事件名称方法()
{
   //你要执行的内容
}
-------------------------以上是理解描述,下面是代码:------------------------------------------------------------------------

namespace UI.ControlEx      // B 窗体

    //定义委托
    public delegate void CustomerCardChanged();
    public partial class CustomerUC : DevExpress.XtraEditors.XtraUserControl
    {

        //定义委托事件
        public event CustomerCardChanged CustomerCardChangedEvent;

        private void CustomerUC_Load(object sender, EventArgs e)
        {
              if (CustomerCardChangedEvent != null)
              {
                  //执行该事件
                  CustomerCardChangedEvent();
              }
        }

    }

}

 

 

namespace UI.Business    // A 窗体
{
    public partial class OrderDocForm : Main.DocForm
    {

        private void SalesOrderDocForm_Load(object sender, EventArgs e)
        {
              //实例 B 窗体的委托 事件

            _CustomerUC.CustomerCardChangedEvent += _CustomerUC_CustomerCardChangedEvent;
        }

        // 执行的方法

         private void _CustomerUC_CustomerCardChangedEvent()
        {
             Message.Show("你好");
        }

    }

}

总结:B 窗体的委托,可以在任何窗体中被调用,而B窗体只需要执行委托方法,所有调用到B的委托都被执行。

            功能类似于:C 窗体中有公开的方法 CC(),D 窗体中有公开的方法 DD(),而 B 窗体需要用到 CC()和DD()这两个方法,

            B至少要写2句代码,C.CC();  D.DD()。

            而委托,无论你有多少个窗体,需要调用,我B窗体仅需要写 一句       委托方法();   只需要在其它窗体中调用B窗体的委托             事件即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值