我编写了一个.NET控件。在System.Web.UI.WebControls.WebControl派生的。其中对于控件的OnClick事件,我用如下代码声明。public event EventHandler ButtonClick
{
add { Events.AddHandler(eventButtonClick,value); }
remove{ Events.RemoveHandler( eventButtonClick,value ); }
}protected void OnButtonClick(WebControlEventArgs e )
{
EventHandler handler = (EventHandler) Events[eventButtonClick];
if ( handler != null )
handler.Invoke(this,e);
}其中 WebControlEventArgs 是派生的 System.EventArgs。我希望在引用该控件的页面中,在使用OnButtonClick方法时,参数 e 能够自动为WebControlEventArgs类型 而不是 System.EventArgs 。可是现在我的控件生成的ButtonClick方法就是如下,其中e参数还是 System.EventArgs。private void DataList1_ButtonClick(object sender, System.EventArgs e)
{}
{
add { Events.AddHandler(eventButtonClick,value); }
remove{ Events.RemoveHandler( eventButtonClick,value ); }
}protected void OnButtonClick(WebControlEventArgs e )
{
EventHandler handler = (EventHandler) Events[eventButtonClick];
if ( handler != null )
handler.Invoke(this,e);
}其中 WebControlEventArgs 是派生的 System.EventArgs。我希望在引用该控件的页面中,在使用OnButtonClick方法时,参数 e 能够自动为WebControlEventArgs类型 而不是 System.EventArgs 。可是现在我的控件生成的ButtonClick方法就是如下,其中e参数还是 System.EventArgs。private void DataList1_ButtonClick(object sender, System.EventArgs e)
{}
public event EventNameEventHandler ButtonClick
{
add { Events.AddHandler(eventButtonClick,value); }
remove{ Events.RemoveHandler( eventButtonClick,value ); }
}
public delegate void EventHandler(object sender, EventArgs e);现在你要使用别的参数据, 就要另外定义一个代理:
public delegate void WebControlEventHandler(object sender, WebControlEventArgs e);然后把
public event EventHandler ButtonClick
{
add { Events.AddHandler(eventButtonClick,value); }
remove{ Events.RemoveHandler( eventButtonClick,value ); }
}改成
public event WebControlEventHandler ButtonClick
{
add { Events.AddHandler(eventButtonClick,value); }
remove{ Events.RemoveHandler( eventButtonClick,value ); }
}在把这一行:
EventHandler handler = (EventHandler) Events[eventButtonClick];
改成
WebControlEventHandler handler = (EventHandler) Events[eventButtonClick];