关于事件的疑惑

lezi1022 2006-09-12 09:09:57
关于事件的疑惑

我自定义了一个类,里面包含一个event EventHandler<VotingEventArgs> ApprovePro
posal;事件

那么在外面,我就可以定义一个委托,实例化这个委托,在把这个委托与ApprovePropo
sal事件关联起来

问题在于,我怎么知道触发了我这个自定义的ApproveProposal事件?

我知道当按下一个按钮时,触发了On_Click事件,但我这个事件什么时候触发呢?这个
触发条件在哪里定义呢?

...全文
145 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
namhyuk 2006-09-13
  • 打赏
  • 举报
回复
对了,是if(PropertyChanged != null)

是一个对象或列表自己在维护着自己改变时触发某个事件的功能,而subscribe这个事件的方法都会被执行。

事件本身来来去去也就玩这点把戏,没什么了不起的。
namhyuk 2006-09-13
  • 打赏
  • 举报
回复
data-binding是怎么工作的?
凭什么textBox.DataBinding.Add("Text", MyObj, "MyColumn");这样后我从控件可以修改MyObj的MyColumn的值,凭什么通过别的代码改变了MyObj.MyColumn的值时,textBox会立即反映出改变?

事件事件事件。。。。加上所谓的由接口构成的协议。这句话可以暂时先不管。。。

比如,

我有一个MyObj对象,这个对象有个MyColumn的属性。比如我希望MyColumn的属性值改变时,能够改变它所绑定的控件,也许是TextBox的Text属性,也许是ListBox里的某个Item,也许是DataGridView的某个Cell。。。我怎么事先知道这个MyColumn会绑定到哪个控件???我不知道是谁,我也不知道我改变时要通知谁。怎么办???

事件事件事件!!!

管他谁对我的改变感兴趣,只要我改变我就执行一个东西。
class Class1 : INotifyPropertyChanged
{
....
public string MyColumn
{
get { return mycolumn; }
set {
mycolumn = valeu;
OnMyColumnChanged("MyColumn"); //注意这里,也可以看出属性在一些地方的用途
}
}
private OnMyColumnChaned(string propertyName)
{
if(ProprtyChanged)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
//就是这个PropertyChanged通知控件更新自己!
}
}
public event PropertyChangedEventHandler PropertyChanged; //事件
}

其实也就是这么无聊~
xiaoliangwh 2006-09-12
  • 打赏
  • 举报
回复
jf
xiaolonghong 2006-09-12
  • 打赏
  • 举报
回复
mark!!!
  • 打赏
  • 举报
回复
sorry,打错了几个字:

出发 -> 触发
NetworkAddressChangedEventHandler --> NetworkAddressChanged
  • 打赏
  • 举报
回复
从出发关系上讲,Event(甚至Delegate)是遵循“好莱坞原则”——You don't call me,we will call you!

比如你想在网络硬件发生变化的时候得到通知,你就可以给
System.Net.NetworkInformation.NetworkChange.NetworkAddressChangedEventHandler
注册一个方法,这样你的方法就能被通知。

你不设计服务,却想干涉服务程序的触发么?Event就是设计用来禁止你这么做的。

如果服务程序将回调设计为 Delegate,那么外部可以像对待普通的对象一样遍历Delegate,甚至去删除其中的某些客户端方法。但是使用Event,外部程序就没有这种破坏力。你可以用+=、-=来处理自己的方法,然后老老实实等待回调。
  • 打赏
  • 举报
回复
“那么在外面,我就可以定义一个委托,实例化这个委托”
——————————————————————————————————————————
真的看不懂这个。使用事件的时候,你考虑委托干什么?

请赐教!
ChengKing 2006-09-12
  • 打赏
  • 举报
回复
一个Event使用的例子,下载运行一下.

http://blog.csdn.net/ChengKing/archive/2006/01/07/572871.aspx
kissknife 2006-09-12
  • 打赏
  • 举报
回复
这得你自己写在想要触发的地方:
if(myEvent!=null)
{
myEvent();
}

110,533

社区成员

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

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

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