項目: XX
模塊:基站樹,網元樹
介紹:
該項目 基站樹中,需要做一個樹控件,用來顯示告警分類。並且,可以根據不同的需要顯示不同的樹結構。
如:一條告警,可以按 地市,網元類型,網元 ,告警 來分級顯示,同時,一條告警消息,有告警級別狀態,因此,需要在上一級節點中顯示子節點的最高級別。在該模型中,大量的用到了事件來處理告警級別上傳。
見代碼:
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;
}
}
}
/// <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)
{
}