我在Extensions.cs
文件中有这个命名空间:
namespace TextBoxExtensions
{
public static class TextBoxExtensionsClass
{
public static void ResetColor(this Label label)
{
label.ForeColor = new TextBox().ForeColor;
}
}
}
然后:
using TextBoxExtensions;
// ...
textbox.ResetColor();
当我尝试在另一个文件中访问它时,我收到以下错误:
'System.Windows.Forms.TextBox'不包含'ResetColor'的定义,最好的扩展方法重载'TextBoxExtensions.TextBoxExtensionsClass.ResetColor(System.Windows.Forms.Label)'有一些无效的参数
答案 0 :(得分:4)
textbox
是什么类型的?您的扩展程序适用于Label
个对象。我猜这是你的问题....你的textbox
对象不是Label
答案 1 :(得分:2)
问题是您已为Label
类型定义了扩展方法,但正在尝试调用TextBox
的实例。
答案 2 :(得分:2)
请尝试使用此功能,这样您就可以将其用于任何类型的控件:
public static void ResetColor<T>(this T control) where T : Control, new()
{
control.ForeColor = new T().ForeColor;
}
答案 3 :(得分:1)
您已为Label
课程定义了扩展方法。然后你试图在TextBox
上使用它,这显然不起作用(这两个类彼此没有关系)。