无法从'方法组'转换为'System.EventHandler'

时间:2013-09-26 13:42:48

标签: c# .net mapping

Hello StackOverflow社区,

我正在使用c#中的.NET Windows应用程序并将一个库项目重建为两个,因为我想在另一个项目中使用一些类。

但是,由于我的更改,我得到一个错误:在编译时无法从'method group'转换为'System.EventHandler'。来自一直有效的类/方法。

该应用程序是一个复杂的映射应用程序,它根据自动读取的CRM和Webservice WSDL信息,使用对象,父关系和子关系,默认值,列表对象和其他功能构建xml / xsd映射。

以下行给出错误:“mappingPickListControls = new MappingPickListControls(pMappingPickList,optionMetadataCollection,ValidationRegister,imglblMandatory,tbControlToValidate_validating);”

将事件处理程序提供给控件构建器,以确保正确的控件可以调用该方法以验证正确的信息。

CRMMappingPickListForm:

private void tbControlToValidate_validating(object sender, CancelEventArgs e)
    {
        ValidateControl(this, (Control)sender);
    }

public CRMMappingPickListForm(Ciber.Crm.MappingCRMTo.Data.CustomOptionMetadataCollection optionMetaDataCol, Point location, Size size)
    {
        InitializeComponent();
        this.Location = new Point (location.X + (size.Width / 2) - (Size.Width / 2), location.Y + (size.Height / 2) - (Size.Height / 2));
        optionMetadataCollection = optionMetaDataCol;

        ValidationRegister = new FormValidationRegister();
        ValidationRegister.ControlValidationRegister.Add(new ControlValidation("tbConfigurationName", 1, "configuration name", 1));
        mappingPickListControls = new MappingPickListControls(pMappingPickList, optionMetadataCollection, ValidationRegister, imglblMandatory, tbControlToValidate_validating);
    }

MappingPickListControls:

public MappingPickListControls(Panel pMappingPickList, CustomOptionMetadataCollection optionMetaDataCol, FormValidationRegister ValidationRegister, Bitmap imglblMandatory, EventHandler tbControlToValidate_validating) 
    {
        lblPickListValueList = new List<Label>();
        tbPickListMappedValueList = new List<TextBox>();
        foreach (CustomOptionMetadata optionMetaData in optionMetaDataCol)
        {
            AddMapping(pMappingPickList, optionMetaData, ValidationRegister, imglblMandatory, tbControlToValidate_validating);
        }
    }

我的解决方案中有3个项目:

MappingCRMTo:所有的窗体都包含 CRMMappingPickListFOrm MappingCRMTo.Controls:具有所有表单扩展和表单相关的类。这是我创建的新项目库。它还包括 MappingPickListControls ,它是控制构建器类之一。 MappingCRMTo.Data:我喜欢在其他一些项目中使用所有序列化对象,WSDL阅读器,zip创建器和其他类。它是 MappingPickListControls的位置

1 个答案:

答案 0 :(得分:4)

EventHandler代表具有以下定义:

public delegate void EventHandler(Object sender, EventArgs e)

您的方法具有以下签名:

private void tbControlToValidate_validating(object sender, CancelEventArgs e)

它们不是完全匹配,因此您无法直接将该方法分配给EventHandler委托。

此方法的调用者想要传入EventArgs对象,但此方法需要CancelEventArgs

由于您实际上没有使用这些参数,最简单的选择是将您的方法更改为以下内容:

private void tbControlToValidate_validating(object sender, EventArgs e)