C#主窗体引用异常

时间:2018-08-20 10:54:07

标签: c# winforms exception reference

我制作了一个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) 

1 个答案:

答案 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();
    }
相关问题