public delegate void TreeSelectEventHandler(string str); public delegate void FindEventHandler(string str); static readonly object TreeSelectEventKey=new object(); static readonly object FindEventKey=new object(); private Hashtable handlers=new Hashtable();
public MainFrm() { // // Windows 窗体设计器支持所必需的 // InitializeComponent(); FmMain main=new FmMain(); main.TopLevel=false; main.Dock=DockStyle.Fill; this.pnlWin.Controls.Add(main); main.Show();
// // TODO: 在 InitializeComponent 调用后添加任何构造函数代码 // }
/// <summary> /// 清理所有正在使用的资源。 /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); }
protected void AddEventHandler(object eventKey, Delegate handler) { lock(this) { if (handlers[eventKey] == null) { handlers.Add( eventKey, handler ); } else { handlers[ eventKey ] = handler; }
}
}
protected void RemoveEventHandler(object eventKey) { lock(this) { handlers.Remove( eventKey ); } }
protected Delegate GetEventHandler(object eventKey) { return (Delegate) handlers[ eventKey ]; }
public event TreeSelectEventHandler TreeAfterSelected { add { AddEventHandler(TreeSelectEventKey, value); } remove { RemoveEventHandler(TreeSelectEventKey); } }
public event FindEventHandler GoFind { add{AddEventHandler(FindEventKey,value);} remove{RemoveEventHandler(FindEventKey);} }
protected virtual void OnTreeAfterSelected(string str) { TreeSelectEventHandler handler = (TreeSelectEventHandler) GetEventHandler( TreeSelectEventKey ); if (handler != null) { handler(str); } }
protected virtual void OnGoFind(string str) { FindEventHandler handler=(FindEventHandler)GetEventHandler(FindEventKey); if(handler!=null) { handler(str); }
}
