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);
}
}