c# - 无法从 'method group' 转换为 'System.EventHandler'

标签 c# .net mapping

你好 StackOverflow 社区,

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

然而,由于我的更改,我得到一个错误:编译时无法从“方法组”转换为“System.EventHandler”。来自一直有效的类/方法。

该应用程序是一个复杂的映射应用程序,它根据自动读取的 CRM 和 Web 服务 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

位置

最佳答案

EventHandler 委托(delegate)具有以下定义:

public delegate void EventHandler(Object sender, EventArgs e)

您的方法具有以下签名:

private void tbControlToValidate_validating(object sender, CancelEventArgs e)

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

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

因为您实际上并不使用这些参数,所以最简单的选择是将您的方法更改为以下内容:

private void tbControlToValidate_validating(object sender, EventArgs e)

关于c# - 无法从 'method group' 转换为 'System.EventHandler',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19029988/

相关文章:

c# - 什么等同于 Java 中的 IntPtr (C#)?

.net - System.Threading.Timer 对于数千个并发计时器是否足够有效?

Documentum 到 Tridion 迁移期间的 XML 映射

mongodb - 使用 Spring Data 将 Kotlin 内联类存储到 MongoDB

java - Tomcat:Servlet 映射与 WebServlet 注释

c# - 无法解析为有效的类型或函数

c# - 如何合并两个 IQueryable 列表

c# - 使用 MVC5 实现 HiddenForEach 时如何构造 lambda 表达式

c# - Web 服务返回空白页而不是 JSON 对象

c# - C# 中双向关联的值相等