如何在C#中定义事件?声明事件跟委托有什么关系,谢谢!
2个回答
展开全部
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
myLei classDX = new myLei();//声明一个类,并初始化
classDX.ShiJian += new myLei.WeiTuo(classDX_ShiJian); //订阅事件,,也就是说确定接收事件
classDX.FangFa(textBox1.Text);//执行类的方法
}
void classDX_ShiJian(string str)
{
//接收事件
MessageBox.Show(str);//显示事件返回的值
}
}
////////////////////////////////////////////////////////////////////
/// <summary>
/// 定义一个类。。类中有FangFa,输入参数为你好 或 混蛋 时引发事件 的演示
/// </summary>
class myLei
{
public delegate void WeiTuo(string str);//声明一个委托,自己定义参数
public event WeiTuo ShiJian;//声明一个事件,请注意,,依赖于委托
public void FangFa(string str)
{
//类方法,用户输入相应的则引发事件,例如输入你好
switch (str)
{
case "你好":
Oneven("问候事件");//引发事件,,事件返回 问候事件值
break;
case "混蛋":
Oneven("骂人事件");//引发事件,,事件返回 骂人事件值
break;
}
}
private void Oneven(string str)//引发事件的过程
{
if (ShiJian != null)//判断是否有订阅事件过程
{
ShiJian(str);
}
}
}
//////////////////////////////////////////////////////////////////////
}
//事件的依托于委托的。为方便你理解,给你写了演示,祝你学习进步
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询