C# 委托使用场景

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/never_tears/article/details/82851480

A1窗口打开B窗口,B窗口向A1窗口传值时使用到委托。只有A1打开B窗口时,可以直接在B调用A1中的(public)方法,这看不出委托的作用(前提是知道B窗口是A1窗口打开的)。

当有窗口A2也打开B窗口,同时需要B窗口返回值时,如果也在B中直接调用A2的(public)方法,就需要在B中判断是A1还是A2调用它,然后调用对应的窗口的方法来实现返回数据(前提是知道B窗口只被A1、A2调用)。

当打开B窗口的有n(未知)个时,显然直接调用父窗口的(public)方法这种做法已经不能实现数据反馈功能了。场景例如:B是下载窗口,下载完成时要向父窗口(A1、A2……)反馈数据。

委托代码例:

// 父窗口(A1):

B b = new B();
b.FeedBackEvent += new B.FeedBackHandler(DownLoad);
b.Show();

private void DownLoad(string msg)
{
    ……
}



// 子窗口(B):
public delegate void FeedBackHandler(string message);
public event FeedBackHandler FeedBackEvent;
 
private void button1_Click(object sender, EventArgs e)
{
    string message = "下载完成";
    this.FeedBackEvent(message);
}

这时,需要打开B窗口且需要返回数据的父窗口,可以通过注册B的委托(FeedBackEvent)来实现,且B窗口不用去关注是谁调用了自己

猜你喜欢

转载自blog.csdn.net/never_tears/article/details/82851480