C# (事件触发)回调函数

使用场景 举例:A类中new出B类,B类中有UDP接收,当UDP接收到数据,将数据传回A类

实现原理:

B类:

1. 声明关于事件的委托;

2. 声明事件;

3. 对于事件的触发

 

A类:

1. 实现接收数据的处理方法

2. 将A类的方法与B类的事件 用 B类的委托绑定

 

代码如下:

 

public partial class FormB
{
    public delegate void AlarmEventHandler(string sender);//声明关于事件的委托,参数为要回传的数据类型
    public event AlarmEventHandler Alarm;//声明事件
	
    public void UDP接收数据(string 模拟接收的数据)
    {
        this.Alarm(模拟接收的数据);   //触发事件,发出数据给Alarm所绑定的接收函数
    }
}

 

public partial class FormA
{
    FormB B1;
    public FormA()
    {
        InitializeComponent();
        B1 = new FormB();
        //将FormA类接收处理函数绑定在FormB的Alarm事件上,FormB中所有通过Alarm回传的数据都由FormA的[数据处理]函数进行处理
        B1.Alarm += new FormB.AlarmEventHandler(数据处理);
    }
		
    void 数据处理(string 数据)//用于接收FormB数据进行处理的函数
    {
        Console.WriteLine("消息传回来了");
        Console.WriteLine(数据);
    }
}

 

测试一下:

private void button1_Click(object sender, EventArgs e)
{
    B1.UDP接收数据("AAA");
}

打印:

可以看出 由FormB的 'UDP接收数据' 函数接收到数据,传给了FormA的 '数据处理' 函数.

你可能感兴趣的:(C#,winform)