1:申明事件
public event EventHandler<ReplaceMaterietChangedEventArgs> ReplaceMaterietChanged;
2:注册事件
public void RegisterMateriet() { frmMain.GetInstance.ReplaceMater.Value.ReplaceMaterietChanged -= ReplaceMaterietChanged; frmMain.GetInstance.ReplaceMater.Value.ReplaceMaterietChanged += ReplaceMaterietChanged; }
在不借助第3方变量的情况下 如何知道
frmMain.GetInstance.ReplaceMater.Value.ReplaceMaterietChanged
已经注册了事件呢?
因为RegisterMateriet在某个动作触发时候才执行注册。这个动作可能会多次触发 而我又不想第一次load的时候 就注册。
int flag=0;
public void RegisterMateriet()
{
if(Interlocked.CompairExchange(ref flag,1,0)==0)
{
//..register your event
}
}
ReplaceMaterietChanged != null && ReplaceMaterietChanged.GetInvocationList().Length > 0
还是借助变量解决了 这个有问题
错误 10 事件xxx.ReplaceMaterieList.ReplaceMaterietChanged”只能出现在 += 或 -= 的左边(
类似楼上的那个思路