2012-09-18 72 views
4

我在Visual Studio 2010(标题中的一个)中收到警告消息未找到'Track_Attack.TAGeneric'类型的构造函数。 C#Winforms

基本上我制作了一个通用表单,它有一堆变量,虚函数。

它需要一个I类作为参数制成,并将其分配到一个局部变量(其然后将与使用getter和setter一个欢迎使用属性)

我然后由另一种形式,其从这种形式继承。一切都很好,它运行,但当我试图看看它的设计者,我得到了错误信息。

public TAGeneric(TAManager iManager) 
    { 
     ControlHelper.SuspendDrawing(this); 

     mManager = iManager; 

     SetStyle(ControlStyles.OptimizedDoubleBuffer | 
      ControlStyles.UserPaint | 
      ControlStyles.AllPaintingInWmPaint, true); 

     InitializeComponent(); 
     SetupCommandBar(); 
     ControlHelper.ResumeDrawing(this); 
    } 

那就是父母。

public TAAddInterval(TAManager iManager) : base(iManager) 
    { 
     InitializeComponent(); 
    } 

这是一个孩子。忘记我在使用“经理人”的时候,我不喜欢这个事实。任何人都可以解释这个问题?从字面上看,它可以很好地运行,但是当试图在设计器中编辑图形面时,它不会加载它。

感谢您的帮助。

+0

与您的问题无关,我建议您将类中的名称“Generic”更改为其他名称,因为[Generic](http://msdn.microsoft.com/en-us/library/ms172192.aspx)实际上意味着.Net中的一些东西。 –

+0

找到一个MS支持:https://support.microsoft.com/en-us/kb/893709 –

回答

8

我怀疑你需要提供一个无参数的构造函数为设计师使用:

public TAAddInterval(TAManager iManager) : base(iManager) 
{ 
    InitializeComponent(); 
} 

[Obsolete("This constructor only exists for the benefit of the designer...")] 
public TAAddInterval() : this(null) 
{ 
} 

如果有如果设计师恰好被投掷某种假TAManager您可以提供代替,这可能避免NullReferenceException打一些使用经理的代码。

+0

把话说出来! +1的Jon Skeet答案! –

+0

因此,我将第二个构造函数与原始的一起添加到我的子窗体中? – ICTech

+0

@ICTech:是的,正如我在答案中所显示的那样。 –

2

您可能只需要一个无参数的构造函数,设计器就可以正常工作。

+0

在我的父项或者孩子?或者两者兼而有之? – ICTech

+1

好吧,对于设计者来说,每一个表单都需要有一个无参数的构造函数,即使这个构造函数只是从它的基类继承而来,如果你把@JonSkeet在向下一层的示例中,您可以实现一个无参数的构造函数,然后从该基类继承(构造函数)。 –

相关问题