我制作了一个UserControl并想添加MainForm参考
public partial class ConsolePage : UserControl
{
public synForm mainForm = new synForm();
public ConsolePage(synForm parentForm)
{
mainForm = parentForm();
InitializeComponent();
}
所以,事情是,只要我用C#代码创建UserControl(无论在哪里),它都能正常工作,但是当我尝试从工具箱中的Designer中添加他时,我就遇到了异常。
我知道,我应该这样称呼他们
MyControl whatever = new MyControl(this);
如果我想从工具箱中添加myControl,我知道我应该在Form.Designer中更正它!
不要讨厌我是编程和拼写方面的新手:D
编辑:<<<<<<<< / p>
忘记输入我遇到的错误:
System.ComponentModel.Design.Serialization.DesignerSerializationManager.CreateInstance(Type type, ICollection arguments, String name, Boolean addToContainer) System.ComponentModel.Design.Serialization.DesignerSerializationManager.System.ComponentModel.Design.Serialization.IDesignerSerializationManager.CreateInstance(Type type, ICollection arguments, String name, Boolean addToContainer) System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeInstance(IDesignerSerializationManager manager, Type type, Object[] parameters, String name, Boolean addToContainer) System.ComponentModel.Design.Serialization.ComponentCodeDomSerializer.DeserializeInstance(IDesignerSerializationManager manager, Type type, Object[] parameters, String name, Boolean addToContainer) System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression) System.ComponentModel.Design.Serialization.CodeDomSerializer.DeserializeStatementToInstance(IDesignerSerializationManager manager, CodeStatement statement) System.ComponentModel.Design.Serialization.CodeDomSerializer.Deserialize(IDesignerSerializationManager manager, Object codeObject) bei System.Windows.Forms.Design.ControlCodeDomSerializer.Deserialize(IDesignerSerializationManager manager, Object codeObject) System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.DeserializeName(IDesignerSerializationManager manager, String name, CodeStatementCollection statements)
答案 0 :(得分:-1)
不知道错误消息(仅提供了堆栈跟踪)和parentForm()的内容,说起来并不容易。但是似乎parentForm()正在做一些设计器中不可能做的事情。
因此,您可以尝试通过检查DesignMode(https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.component.designmode?redirectedfrom=MSDN&view=netframework-4.7.2#System_ComponentModel_Component_DesignMode)在设计模式下不执行parentForm()。
public ConsolePage()
{
if (!DesignMode)
{
mainForm = parentForm();
}
InitializeComponent();
}