c#事件 学习记录

 项目: XX

模块:基站树,网元树

介绍:

该项目 基站树中,需要做一个树控件,用来显示告警分类。并且,可以根据不同的需要显示不同的树结构。

如:一条告警,可以按 地市,网元类型,网元 ,告警 来分级显示,同时,一条告警消息,有告警级别状态,因此,需要在上一级节点中显示子节点的最高级别。在该模型中,大量的用到了事件来处理告警级别上传。

见代码:

 

public   delegate   void  SeverityChangedHandler < T > ( object  sender, SeverityChangedEventArgs < T >  e)
        
where  T : ISeverity;

    
public   class  SeverityChangedEventArgs < T >  : EventArgs
        
where  T : ISeverity
    {
        
private  T mOldSeverity;
        
private  T mNewSeverity;

        
public  SeverityChangedEventArgs(T oldSeverity, T newSeverity)
        {
            mOldSeverity 
=  oldSeverity;
            mNewSeverity 
=  newSeverity;
        }

        
public  T OldSeverity
        {
            
get
            {
                
return  mOldSeverity;
            }
        }

        
public  T NewSeverity
        {
            
get
            {
                
return  mNewSeverity;
            }
        }
    }

 

     #region  无线事件定义
        
///   <summary>
        
///  无线告警级别改变事件
        
///   </summary>
         public   event  SeverityChangedHandler < AlarmSeverity >  SeverityWChanged
        {
            add { mSeverityWChanged 
+=  value; }
            remove { mSeverityWChanged 
-=  value; }
        }

        
private   event  SeverityChangedHandler < AlarmSeverity >  mSeverityWChanged;
        
protected   void  OnSeverityWChanged(AlarmSeverity oldSeverity, AlarmSeverity newSeverity)
        {
            
if  (mSeverityWChanged  !=   null )
            {
                mSeverityWChanged(
this new  SeverityChangedEventArgs < AlarmSeverity > (oldSeverity, newSeverity));
            }
        }
        
#endregion

        
#endregion

 

以下是一般 用户控件中事件的写法

控件
1.首先,在userctl中声明事件,可以是系统默认的,也可以是自己声明的:
public event EventHandler TitleDoubleClickEvent;//标题栏左键双击事件

2.写一个它的保护方法:
protected virtual void OnTitleDoubleClickEvent(EventArgs e)
{
    if (TitleDoubleClickEvent != null)
    {
 TitleDoubleClickEvent(this, e);
    }
}

3.对应至某个(已知)事件
private void pnlTop_MouseDoubleClick(object sender, MouseEventArgs e)
{
    OnTitleDoubleClickEvent(e);
}
主窗口
4.在必须引用userctl的地方,关联事件
userctrArr utl = new UserControl1
utl.TitleDoubleClickEvent += new EventHandler(GridTitleDoubleClick);

5.在关联的方法中就可以用该事件了
private void GridTitleDoubleClick(object sender, System.EventArgs e)
{

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值