C# 怎么给类增加自定义事件?

比如我自己添加了一个类里面有一些属性,比如Text怎么注册TextChange这个事件?不要跟我说在属性的set和get中添加相关的方法啊..我是说注册事件我说的是自定义... 比如我自己添加了一个类
里面有一些属性,比如Text
怎么注册TextChange这个事件?
不要跟我说在属性的set和get中添加相关的方法啊..
我是说注册事件
我说的是自定义类 不是控件

谢谢楼下几位的回答,这个委托的方式我在书上也见过
但是还是要在Text属性的get和set中添加onEventName来调用吗?那还要事件干嘛呢,不是直接写一个方法在get和set中调用算了吗?

3楼的解释我能理解
看来
我是理解错了事件的含义
我以为事件就是让 某个方法 "自动运行"的

但是我还是有一些不明白,如果仅仅是为了外部引用,不能直接使用委托吗
而要使用委托+事件的方案,相比单纯的委托好处在哪儿呢?
展开
 我来答
depluin
推荐于2018-04-13 · TA获得超过3179个赞
知道大有可为答主
回答量:3378
采纳率:75%
帮助的人:2432万
展开全部
使用委托+事件来实现

public delegate void TextChangeHandler(object sender, EventArgs e);
public event TextChangeHandler TextChanged;
然后在你需要触发的事件中,检查
TextChanged是否为null,不为null的话直接执行TextChanged就行了。。。

如果你硬要在设置属性中执行事件

public string kk
{
get
{
//如果旧值 != 新值,触发事件
if (TextChanged != null)
{
TextChanged(null,EventArgs.Empty);
}
}
}

一般web的自定义控件触发TextChanged都在postdata数据回传的时候...

你要明白,你想在get中写个方法,则该方法只能作用于你这个控件的内部成员。。。。
斛珠轩QD
2010-05-30 · TA获得超过153个赞
知道答主
回答量:108
采纳率:0%
帮助的人:89万
展开全部
你用vs来写啊。。。直接双击控件就可以...vs自动为你实现注册...你只要写响应代码就可以了...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
styshoo
2010-05-30 · 超过15用户采纳过TA的回答
知道答主
回答量:115
采纳率:0%
帮助的人:69.9万
展开全部
谢谢楼下几位的回答,这个委托的方式我在书上也见过
但是还是要在Text属性的get和set中添加onEventName来调用吗?那还要事件干嘛呢,不是直接写一个方法在get和set中调用算了吗?

回答你这几句,你还没有明白委托的含义。三楼是正确的,你认真看一下代码,然后自己再用一下。用事件是为了以后的扩展,慢慢理解吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友331112cc1
2010-05-30 · TA获得超过1310个赞
知道小有建树答主
回答量:1070
采纳率:100%
帮助的人:424万
展开全部
定义委托。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式