用delegate 和event实现事件(有参和无参,有返回值和无返回值)
using System;
using System.Windows.Forms;
namespace 委托与事件
{
public partial class Form1 : Form
{
//1、声明委托
public delegate void ConnectDelegate1(); // 无参数,无返回值
public delegate void ConnectDelegate2(bool state); // 有参数,无返回值
public delegate TResult Func<out TResult>(); // 无参数,有返回值TResult
public delegate TResult Func<in T, out TResult>(T arg); // 带参数T,有返回值TResult
//2、声明委托事件
public event ConnectDelegate1 Event1; // 无参数,无返回值
public event ConnectDelegate2 Event2; // 有参数,无返回值
public event Func<string> Event3; // 无参数,有返回值
public event Func<bool, string> Event4; // 带参数,有返回值
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//3、订阅事件
Event1 += Method1;
Event2 += Method2;
Event3 += Method3;
Event4 += Method4;
}
//4、触发事件
private void button1_Click(object sender, EventArgs e)//执行Click方法,触发事件
{
if (Event2 != null) //是否被订阅
Event2(true); //发布事件
}
private void button2_Click(object sender, EventArgs e)
{
if (Event2 != null) //是否被订阅
Event2(false); //发布事件
}
//5、执行的方法
private void Method1()//无参数,无返回值
{
string str = string.Empty;
str = "测试用";
}
private void Method2(bool make)//有参数,无返回值
{
if (make == true)
label1.Text = "打开连接";
else
label1.Text = "断开连接";
}
private string Method3()//无参数,有返回值
{
string str = string.Empty;
return str;
}
private string Method4(bool make)//有参数,有返回值
{
string str = string.Empty;
if (make == true)
label1.Text = "打开连接";
else
label1.Text = "断开连接";
return str;
}
}
}
本文来自博客园,作者:lyc6921,转载请注明原文链接:https://www.cnblogs.com/lyc6921/p/19147077
浙公网安备 33010602011771号