C# Dynamic template implicit conversion error from System.EventHandler to System.EventHandler<TEventArgs>

徘徊边缘 提交于 2019-12-13 03:48:07

问题


Code:

    public void InstantiateIn(System.Web.UI.Control container)
    {
        PlaceHolder ph = new PlaceHolder();
        SectionArgs e = new SectionArgs();
        ph.DataBinding += new EventHandler<SectionArgs>(ItemTemplate_DataBinding);
        container.Controls.Add(ph);
    }

    static void ItemTemplate_DataBinding(object sender, SectionArgs e)
    {
        PlaceHolder ph = (PlaceHolder)sender;
    }

Error: Cannot implicitly convert type 'System.EventHandler<UserControlLibrary.Section.ItemTemplate.SectionArgs>' to 'System.EventHandler'


回答1:


The error is being received because PlaceHolder.DataBinding is an EventHandler, not an EventHandler<SectionArgs>, but you're trying to subscribe with the wrong type of delegate.

This should be:

public void InstantiateIn(System.Web.UI.Control container) 
{ 
    PlaceHolder ph = new PlaceHolder(); 
    SectionArgs e = new SectionArgs(); 
    ph.DataBinding += new EventHandler(ItemTemplate_DataBinding); 
    container.Controls.Add(ph); 
} 

static void ItemTemplate_DataBinding(object sender, EventArgs e) 
{ 
    PlaceHolder ph = (PlaceHolder)sender; 
} 

The above will work correctly.



来源:https://stackoverflow.com/questions/2073965/c-sharp-dynamic-template-implicit-conversion-error-from-system-eventhandler-to-s

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!