DocumentDesignerから継承するカスタムデザイナクラスを実装しました。.NET Frameworkの標準FormクラスはFormDocumentDesignerクラス(これもDocumentDesignerから継承)を使用しますが、このクラスは内部クラスであるため、継承して動作をカスタマイズすることはできません。リフレクターを使用してこのクラスのロジックをコピーし、挿入しました。カスタムデザイナークラスにあります(フォームのデフォルトのデザイン時の動作が標準フォームに準拠しているため)。
1つを除いて、すべて正常に機能します。カスタムデザイナークラスのInitializeメソッドに、ToolStripコントロールを挿入して、デザイン時にフォームを開くたびに、このコントロールが表示および編集できるようにします。問題は、デザイナでフォームを閉じて再度開くたびにInitializeメソッドが呼び出されるため、ToolStripコントロールの新しいインスタンスが作成され、フォームのControlsコレクションに追加されることです。コードにシリアル化されたToolStripコントロールがすでにあるかどうかを確認し、別のコントロールを追加しないようにする方法を探しています。
これまで、IDesignerHostのLoadCompleteイベントを使用して、フォームのControlsコレクションにToolStripがあるかどうかを確認できることがわかりました。ただし、より良いアイデアをいただければ幸いです。
御時間ありがとうございます!:-)