C#如何定义一个事件,实现事件的调用

 我来答
大别山的蜗牛
高粉答主

2016-01-13 · 一只互联网搬运的蜗牛
大别山的蜗牛
采纳数:6928 获赞数:12024

向TA提问 私信TA
展开全部
public event EventHandler<EventArgs> MyEventToBeFired;
public void FireEvent(Guid instanceId, string handler)
{
// Note: this is being fired from a method with in the same class that defined the event (i.e. "this").
EventArgs e = new EventArgs(instanceId);
MulticastDelegate eventDelagate = (MulticastDelegate)this
.GetType()
.GetField(handler, BindingFlags.Instance | BindingFlags.NonPublic)
.GetValue(this);
Delegate[] delegates = eventDelagate.GetInvocationList();
foreach (Delegate dlg in delegates)
{
dlg.Method.Invoke( dlg.Target, new object[] { this, e } );
}
}
FireEvent(new Guid(), "MyEventToBeFired");
300gonddd
推荐于2017-09-24 · TA获得超过2710个赞
知道大有可为答主
回答量:4542
采纳率:28%
帮助的人:2611万
展开全部
using System;

namespace ConsoleApplication7
{
class Program
{
static void Main(string[] args)
{
people p = new people("Name1");
p.PropertyChanged += new EventHandler(p_PropertyChanged);//注册事件处理函数
p.Name = "Name2";
Console.ReadKey();
}

static void p_PropertyChanged(object sender, EventArgs e)//事件的处理函数
{
Console.WriteLine("NamePropertyChanged:"+(sender as people).Name);
}
}
class people
{
public event EventHandler PropertyChanged;
private string name=String .Empty;
public people(string name)
{
this.name = name;
}
public string Name
{
get
set
{
name = value;
this.OnPropertyChanged(new EventArgs());//每次改变Name值调用方法;
}
}

private void OnPropertyChanged(EventArgs eventArgs)
{
if (this.PropertyChanged != null)//判断事件是否有处理函数
{
this.PropertyChanged(this, eventArgs);
}
}
}
}
//请参考
从你写的程序来看 从类的外部是不可能改变属性的值了,因为你的这两个属性都是只读的, 只能在类的内部改变_a _b的值
那样你写这个类的时候 你应该很清楚哪里改变了_a _b的值 真接调用相应的改变方法就行了
所以你写的这个类 要让属性在类外部也能改变其值 不然属性值的改变只在类内部并触发事件也就没什么意义了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友60be2dd6c
推荐于2018-03-04 · TA获得超过286个赞
知道小有建树答主
回答量:107
采纳率:0%
帮助的人:73.8万
展开全部
class EventTest
{
public delegate void MyEventHandler(int param);//定义委托
public event MyEventHandler MyEvent; //定义事件

public static void OnRaiseEvent(int param) //激发事件的函数
{
MyEvent(param);
}
}

调用时,首先安装事件
EventTest eventTest=new EventTest();
eventTest.MyEvent+=new MyEventHandler(MyFunction);//安装事件

public void MyFunction(int param)
{
Console.WriteLine(param);
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tj2810
2011-07-11 · TA获得超过365个赞
知道答主
回答量:250
采纳率:100%
帮助的人:178万
展开全部
双击所需要定义事件的控件就可以去写代码定义了,调用之前需要饮用.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式