我有一个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;
我怎样才能避免这种设计师错误?