设计视图错误:找不到类型的构造函数

时间:2015-02-26 10:28:58

标签: c# visual-studio-2012 windows-forms-designer

我有一个C#Visual Studio 2012 Windows窗体应用程序,其中包含一个继承自另一个类(WzNuovoClienteStepBase)的UserControl(UcCLReferenteTecnico)。

示例:

//my UserControl
public partial class UcCLReferenteTecnico : WzNuovoClienteStepBase
    {
        public UcCLReferenteTecnico(EvoClienteWz aiClienteWz, string aiCodLinea)
            : base(aiClienteWz, aiCodLinea)
        {
            InitializeComponent();
            SetParameters(aiClienteWz,aiCodLinea)         
        }
    }

public EvoClienteWz _ClienteWz = new EvoClienteWz();
public class WzNuovoClienteStepBase : EvolutionBaseUC
    {
        public WzNuovoClienteStepBase(EvoClienteWz aiEvoClienteWz,
        string  aiCodLinea)              
        {
            _ClienteWz = aiEvoClienteWz;
            string wCod = aiCodLinea;
        }

public class EvolutionBaseUC : XtraUserControl, IEvolutionControl
{
 //implementation of this class
}

当我尝试在VisualStudio的设计视图模式下打开UcCLReferenteTecnico时遇到的问题,我收到以下错误:

   Constructor on type 'EvoBoAnagraficaWz.WzNuovoClienteStepBase' not found.

注意:项目编译并运行完美;

在视图设计器中,此错误调用堆栈的实例是:

at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder 
binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark)
at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture)
at System.ComponentModel.Design.DesignSurface.CreateInstance(Type type)
at Microsoft.VisualStudio.Design.VSDesignSurface.CreateInstance(Type type)
at System.ComponentModel.Design.DesignerHost.System.ComponentModel.Design.IDesignerHost.CreateComponent(Type componentType, String name)
at System.ComponentModel.Design.Serialization.DesignerSerializationManager.CreateInstance(Type type, ICollection arguments, String name, Boolean addToContainer)
at System.ComponentModel.Design.Serialization.DesignerSerializationManager.System.ComponentModel.Design.Serialization.IDesignerSerializationManager.CreateInstance(Type type, ICollection arguments, String name, Boolean addToContainer)
at System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.Deserialize(IDesignerSerializationManager manager, CodeTypeDeclaration declaration)
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
at System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host)    

我试图用这种方式直接用XtraUserControl替换EvolutionBaseUc:

 public partial class UcCLReferenteTecnico : XtraUserControl
    {}

以避免再次从另一个类继承,但错误是相同的。

N.B。在我的Windows窗体中,我以这种方式使用acitvator创建UserControl(UcCLReferenteTecnico):

WzNuovoClienteStepBase wCtrl = Activator.CreateInstance(t, new object[] { _EvoClienteWz, wCodLinea }) as WzNuovoClienteStepBase;

我怎样才能避免这种设计师错误?

0 个答案:

没有答案