EventHandler问题

allenzhang0004 2010-08-25 03:38:02
首先:this.Activated += new EventHandler(Form1_Activated); 这的“+= ”是啥意思?

其次:child.TextChanged += new EventHandler(child_TextChanged);这种就是一个委托

但我看到有的也有addressof 。。。 有的定义委托用Delegate关键字

看资料说EventHandler 是一种预定义委托,表示事件的事件处理程序方法,它与事件是否生成事件数据无关。

这话太抽象了。。。什么叫”生成事件数据“

看了几次事件与委托还是不彻底明白,看到程序只能知道这用到了委托。。用到了自定义事件。。。

忘好心人引导一把!
...全文
597 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
studentliudong 2010-08-25
  • 打赏
  • 举报
回复
学习下
张子阳的委托和事件的确讲的很好
allenzhang0004 2010-08-25
  • 打赏
  • 举报
回复
不用定义委托了。EventHandler就是委托类型
public sub child_TextChanged(byval sender as object ,byval e as eventargs)
'DoSomeThing
end sub

AddHandler child.TextChanged , AddressOf(child_TextChanged)

vb.net 中怎么使用eventhander 难道就是上面那样嘛? 没提到EventHandler关键字阿。。。
完美-态度 2010-08-25
  • 打赏
  • 举报
回复
学习了。
allenzhang0004 2010-08-25
  • 打赏
  • 举报
回复
今天回去再好好捉摸捉摸 明天上午来结帖
兔子-顾问 2010-08-25
  • 打赏
  • 举报
回复
不用定义委托了。EventHandler就是委托类型
public sub child_TextChanged(byval sender as object ,byval e as eventargs)
'DoSomeThing
end sub

AddHandler child.TextChanged , AddressOf(child_TextChanged)
allenzhang0004 2010-08-25
  • 打赏
  • 举报
回复
额 那我再问个问题

比如C#
child.TextChanged += new EventHandler(child_TextChanged);

改成VB
'先定义委托
Public Delegate Sub dele()
Public Sub f1()
方法内容
End Sub

'调用
Dim instance As New dele(AddressOf f1)

这样对吗???

反正我感觉这里好乱 还有addhander 一大堆。。。



xrongzhen 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 allenzhang0004 的回复:]
首先:this.Activated += new EventHandler(Form1_Activated); 这的“+= ”是啥意思?

其次:child.TextChanged += new EventHandler(child_TextChanged);这种就是一个委托

但我看到有的也有addressof 。。。 有的定义委托用Delegate关键字

看资料说Ev……
[/Quote]

1、这的“+= ”是啥意思?
事件委托,就是this.Activated触发时,执行的是Form1_Activated()


2、但我看到有的也有addressof 。。。 有的定义委托用Delegate关键字
AddressOf是VB.net中的,Delegete是C#中的。.Net的事件机制是用委托来实现的。EventHandler是.net封装好的委托,专门用于事件

3、EventHandler 是一种预定义委托,表示事件的事件处理程序方法,它与事件是否生成事件数据无关。
生成事件数据也就是说,这个事件有没有附加的数据。若有,就生成事件数据,保存在EventArgs e中;若没有,就是不生成时间数据,EventArgs e只是一个实例,就没什么意义了

wuyq11 2010-08-25
  • 打赏
  • 举报
回复
button.Click+=Button_click;会自动应用evnthandler委托。
EventHandler 是一个预定义的委托,专用于表示不生成数据的事件的事件处理程序方法。
EventHandler 委托
所有asp.net内置控件事件处理函数的签名都和EventHandler或者继承于它的子类保持一致。
[SerializableAttribute]
[ComVisibleAttribute(true)]
public delegate void EventHandler(
Object sender,
EventArgs e
)
第一个参数表示引发事件的对象,第二个参数表示引发事件后所要传给处理程序的参数。
dancingbit 2010-08-25
  • 打赏
  • 举报
回复
1.“+=”为此事件添加一个委托,这个委托代表一个事件处理方法。
2.C#中使用Delegate,实际上是一个类。
3.事件数据,就是事件中提供的附加数据,比如按钮事件,会提供键码等一些数据。
兔子-顾问 2010-08-25
  • 打赏
  • 举报
回复
1.这里的+=是对event关键字的特殊操作,调用事件的add方法。添加事件响应函数。
2.addressof 是vb.net的关键字,表示返回函数的引用。delegate是c#下匿名方法的写法。2008开始支持匿名方法,但不支持匿名委托,所以需要写为:
child.TextChanged += (EventHandler)delegate(object sender, EventArgs e)
{
//代码
};
资源下载链接为: https://pan.quark.cn/s/67c535f75d4c 在C#中,EventHandler是一种非常重要的委托类型,专门用于处理事件。它将事件的触发者(事件源)和事件的响应者(事件处理器)连接起来。本文将深入探讨EventHandler的概念,并通过具体示例来展示其工作原理。 EventHandler是一个预定义的委托类型,它规定了事件处理方法的签名。这种签名通常包含两个参数:一个是Object类型的sender参数,表示触发事件的对象;另一个是EventArgs子类的实例e,用于传递事件相关的额外信息。一个典型的事件处理方法如下所示: 在我们的示例中,我们定义了一个水箱类,它有一个水箱空事件,当水箱中的水用完时会触发。水箱空事件使用EventHandler类型进行定义: 接下来,我们定义了一个加水器类,它有一个加水方法,作为事件的处理程序,用于给水箱加水: 在User类中,我们创建了水箱和加水器的实例,并将加水器1的加水方法注册为水箱1的水箱空事件的处理程序: 这里,+=运算符的作用是将事件处理程序(加水器1.加水)绑定到水箱空事件上。这意味着当水箱空事件被触发时,加水器1的加水方法会被自动调用。 关于委托的简单理解,可以将其视为将一项任务委托给他人去完成。例如,this.Activated += new EventHandler(Form1_Activated);可以理解为:“当this对象被激活时(Activated事件),请执行Form1_Activated方法。”这里的+=操作就是建立了一个委托关系,将事件与事件处理方法关联起来。 总结来说,EventHandler是C#中事件处理的核心机制,它允许对象之间以松耦合的方式进行通信。通过定义事件和事件处理方法,我们可以创建能够响应用户交互或系统状态变化的应用程序。在实际开发中,Eve

111,115

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧