c#事件 学习记录
2007-09-11 16:42
465 查看
项目: 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)
{
}
模块:基站树,网元树
介绍:
该项目 基站树中,需要做一个树控件,用来显示告警分类。并且,可以根据不同的需要显示不同的树结构。
如:一条告警,可以按 地市,网元类型,网元 ,告警 来分级显示,同时,一条告警消息,有告警级别状态,因此,需要在上一级节点中显示子节点的最高级别。在该模型中,大量的用到了事件来处理告警级别上传。
见代码:
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)
{
}
相关文章推荐
- c#写的五子棋程序,供学习WinForms的鼠标事件和使用GDI+
- 学习C#的第一个程序:笔记查找与记录
- 20101007 学习记录:c#数字化格式输出
- c#事件学习
- C#学习:事件
- C# 委托、事件 学习
- 20100512 学习记录 vb的dll加入不进c#
- C#学习记录
- 学习记录 asp.net c#连接sql server 2012 调用存储过程 用返回的记录填充CheckBoxList 都是常用的,特此记录
- Unity学习笔记 之 触发Unity UI 的 Button 事件 的代码记录
- C#JQuery学习(四)事件
- [读书笔记]C#学习笔记二: 委托和事件的用法及不同
- C#代理类型学习记录(拷贝的代码哈哈)
- C#学习笔记之——事件
- C#事件委托学习(一)
- AngualrJS学习记录-作用域的层级和事件
- Java与C#的比较学习记录(3)
- Axure RP 6.5学习记录(6)-事件交互-在登录表单点击登录按钮跳转到首页
- 【C#、SQL】学习与错误记录(一)
- C#学习之初步理解委托、事件、匿名方法和Lambda