委托的的使用举例[C#]

本文介绍了C#中委托的概念,将其比作C++的回调函数,并提供了详细示例。通过创建委托类型、赋值及调用,展示了如何在两个窗体间传递值。文章还提及事件与委托的关系,指出事件是委托的集合,但未深入讨论事件的使用。

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

此例的源码在:http://download.csdn.net/source/688828

源码包括了两个form间传值的几种方式,第四种即是委托

---------------------------------------------------------------------------------------------------------------------

委托,就同C++里面的回调函数一样,用函数作参数。VC++中的钩子的应用也是回调函数的一个例子,在C#里是委托,其实都是一回事。

提前说明一句:事件其实就是委托的一个集合,对其的操作只能用+=, -=来操作,其它没啥区别,都是表回调的。

开始来实现吧,委托懂了,事件就很好懂了,所以就不讲事件了。

在子画面先声明一个委托。

public delegate void DelValueSend(object obj); // 一个委托

public DelValueSend delegateValue;         // 一个委托

 

然后在主现在调用子画面的时候,给委托赋值[注意,其值为方法名,且此方法的类型与签名要与子画面定义的委托的类型和签名是一样的]

如下:

//Use Delegate to Send Value

private void btnCallSubForm4_Click(object sender, EventArgs e)

{

    SubForm4 sf4 = new SubForm4();//用子画面

    sf4.delegateValue = DelegateSendValue; //委托赋值,一方法名

    sf4.Show();

}

给委托赋值后就该实现这个方法了,记住,方法类型和签名要与子画面定义的一样,如下:       

//public delegate void DelValueSend(object obj);

public void DelegateSendValue(object obj)

{

    //this.txtCallSubForm4.Text = obj.ToString();

//在此接收子画面传加来的值,或别的操作

}

再来看看子画面,在什么时候来触发这个委托方法呢。我们把它放在一个button点击事件里触发如下:

private void btnSendtoMainForm_Click(object sender, EventArgs e)

{

   if (txtSub4Receive.Text.Trim() == "")

   {

      MessageBox.Show("Input something please");

   }  

   else

   {

    //如果没给委托赋值,则不做操作,给委托赋值则把值传给主画面

     if (delegateValue != null)

     {

       delegateValue(txtSub4Receive.Text.ToString());

     }

   }

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值