关于事件的疑惑我自定义了一个类,里面包含一个event EventHandler<VotingEventArgs> ApprovePro
posal;事件那么在外面,我就可以定义一个委托,实例化这个委托,在把这个委托与ApprovePropo
sal事件关联起来问题在于,我怎么知道触发了我这个自定义的ApproveProposal事件?我知道当按下一个按钮时,触发了On_Click事件,但我这个事件什么时候触发呢?这个
触发条件在哪里定义呢?
posal;事件那么在外面,我就可以定义一个委托,实例化这个委托,在把这个委托与ApprovePropo
sal事件关联起来问题在于,我怎么知道触发了我这个自定义的ApproveProposal事件?我知道当按下一个按钮时,触发了On_Click事件,但我这个事件什么时候触发呢?这个
触发条件在哪里定义呢?
if(myEvent!=null)
{
myEvent();
}
System.Net.NetworkInformation.NetworkChange.NetworkAddressChangedEventHandler
注册一个方法,这样你的方法就能被通知。你不设计服务,却想干涉服务程序的触发么?Event就是设计用来禁止你这么做的。如果服务程序将回调设计为 Delegate,那么外部可以像对待普通的对象一样遍历Delegate,甚至去删除其中的某些客户端方法。但是使用Event,外部程序就没有这种破坏力。你可以用+=、-=来处理自己的方法,然后老老实实等待回调。
NetworkAddressChangedEventHandler --> NetworkAddressChanged
凭什么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; //事件
}其实也就是这么无聊~