【问题标题】:Error 130 - The call is ambiguous between the following methods or properties错误 130 - 以下方法或属性之间的调用不明确
【发布时间】:2013-01-29 09:27:41
【问题描述】:
public static class MyExtensions
{
    public static bool TextBoxIsEmpty(TextBox txtControl, ErrorProvider eP)
    {
        if (txtControl.Text == string.Empty)
        {
            eP.SetError(txtControl, "You must Enter something!");
            return true;
        }
        else
        {
            eP.Clear();
            return false;
        }
    }
}

我在整个项目中都使用这个函数来验证一个空的文本框。在我将一个用户控件添加到我的一个 WinForms 之前,它可以正常工作。特别是,当 Grid 的数据源发生变化时,该用户控件的一个实例被添加到我的表单中,但我得到了这个错误。


错误 129 以下方法或属性之间的调用不明确:“DominateVehicle.Class.MyExtensions.TextBoxIsEmpty(System.Windows.Forms.TextBox, System.Windows.Forms.ErrorProvider)”和“DominateVehicle.Class.MyExtensions。 TextBoxIsEmpty(System.Windows.Forms.TextBox, System.Windows.Forms.ErrorProvider)' D: \Vechel_Dominate\a\DominateVehicle\frmDefectClass.cs 30 41 DominateVehicle


不知道添加用户控件和这个错误有什么关系? 如果我删除 UserControl,我的代码将不起作用并且我收到错误消息。我该怎么办?

【问题讨论】:

  • 你已经在 2 个类中定义了这个函数。而且由于它是扩展方法,所以调用是模棱两可的(意味着编译器不知道选择哪一个)
  • -1 for this not-sentence :“我在整个项目中使用此功能来检查空文本框的 Err 它正常工作,直到我在数据源时将一个用户控件添加到我的一个 winform网格更改添加该用户控件的一个实例到我的表单,但我得到这个错误“
  • 或者,您可以自己编辑问题,而不是投反对票。很高兴你解释了你的反对意见。 +1。我已经编辑了语法问题。

标签: c# user-controls


【解决方案1】:

我也有这个错误。

当我在我的项目中添加一个控件到我的一个表单时,我总是无法再编译,因为对我所有扩展方法的调用不明确。

最后我看到VS将我的项目的引用添加到同一个项目中,所以编译器遇到了这个问题。然后删除您的代码无济于事,因为引用仍然存在。

我可以通过从我的项目中删除此引用来解决问题。也许这对其他人有帮助。

【讨论】:

    【解决方案2】:

    这个函数在两个地方定义。检查那个。编译器不知道调用哪一个。在您的解决方案中查找。这个名字会有两个函数。

    【讨论】:

    • 我检查了我所有的项目这个函数就在那个类中!
    猜你喜欢
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 2012-02-09
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多