ホーム>source

UserControlを作成し、MainForm参照を追加したかった

 public partial class ConsolePage : UserControl
{
    public synForm mainForm = new synForm();
    public ConsolePage(synForm parentForm)
    {
        mainForm = parentForm();
        InitializeComponent();
    }

だから、長いこと私はc#コードでUserControlを作成するので(どこでもかまいません)完全に動作しますが、ToolboxからDesignerから追加しようとすると例外が発生します

私はこのように呼ぶべきだと知っています

MyControl whatever = new MyControl(this);

そして、ツールボックスからmyControlを追加したい場合、Form.Designerでそれを修正する必要があることを知っています!

プログラミングとスペリングの新しいimを私を憎まないでください:D

編集:<<<<<<<

私が得たエラーを置くのを忘れました:

System.ComponentModel.Design.Serialization.DesignerSerializationManager.CreateInstance(タイプタイプ、ICollection引数、ストリング名、ブール値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マネージャー、タイプタイプ、Object []パラメーター、ストリング名、ブール値addToContainer)
System.ComponentModel.Design.Serialization.ComponentCodeDomSerializer.DeserializeInstance(IDesignerSerializationManagerマネージャー、タイプタイプ、Object []パラメーター、ストリング名、ブール値addToContainer)
System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManagerマネージャー、文字列名、CodeExpression式)
System.ComponentModel.Design.Serialization.CodeDomSerializer.DeserializeStatementToInstance(IDesignerSerializationManagerマネージャー、CodeStatementステートメント)
 System.ComponentModel.Design.Serialization.CodeDomSerializer.Deserialize(IDesignerSerializationManagerマネージャー、オブジェクトcodeObject)
bei System.Windows.Forms.Design.ControlCodeDomSerializer.Deserialize(IDesignerSerializationManager manager、Object codeObject)
System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.DeserializeName(IDesignerSerializationManagerマネージャー、文字列名、CodeStatementCollectionステートメント)
あなたの答え
  • 解決した方法 # 1

    エラーメッセージ(スタックトレースのみを提供した)とparentForm()の内容がわからなければ、それを言うのは簡単ではありません。しかし、parentForm()はデザイナーでは不可能なことをしているようです。

    そのため、DesignMode(https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.component.designmode?redirectedfrom=MSDN&view=netframework-4.7をチェックすることにより、デザインモードでparentForm()を実行しないようにすることができます。 .2#System_ComponentModel_Component_DesignMode)。

    public ConsolePage()
        {
            if (!DesignMode)
            {
                mainForm = parentForm();
            }
            InitializeComponent();
        }
    
    

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ ionicでクリックされるたびにタブをデフォールトページにプッシュする方法