c#事件 学习记录

原创 2007年09月11日 16:42:00

 项目: 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(
thisnew 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)
{

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C#事件记录

看了这么久,对于C#的事件机制还是一头雾水。 最让我迷惑不解的是事件的处理方法是在什么时候执行的。 看到的文档都是说是在事件发生的时候被调用。结合看到的例程, 如果是定时的事件,我还可以理解,但是如果...

C#学习资料之代理与事件

  • 2011-03-11 13:13
  • 215KB
  • 下载

unity3d学习笔记(十八)--利用C#的代理和事件结合NGUI的按钮实现施放技能

本系列文章由Aimar_Johnny编写,欢迎转载,转载请标明出处,谢谢。 http://blog.csdn.net/lzhq1982/article/details/12999381 ...

Unity3D 学习 - 通过C#脚本创建简单的按钮、响应事件

通过C#脚本创建简单的按钮、响应事件
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)