WinForm
アプリケーションがあります。また、独自のUser Control
を作成しました。すべてうまくいきました。今日まで、プログラムに再度追加しようとするとエラーメッセージが表示されました(Visual Studioでは削除しましたが、削除していません)。
ツールボックスアイテム#UserControlNameを読み込めませんでした。ツールボックスから削除されます。
ソリューションエクスプローラーにありますが、このエラーの後、ツールボックスから消えます。私はまた言う警告を受け取ります:
'#UserControlName'は割り当てられず、常にデフォルト値がnullになります。
そして、デザイナーのコードを見ると、それは事実です。しかし、私は自分のデザイナーコードで何もしていません。ユーザーコントロールはそこで定義されていますが、インスタンス化されていません。どうすれば元に戻すことができますか?
ビルドプラットフォームをx32
からx64
に変更したこととは何か関係がありますか?その場合、その変更後にプログラムが正常に機能していたので、私は驚きます。
このようなときは、デザイナーコードをいじる必要があります。デザイナーコードに大幅な変更を加えない限り、何も壊してはいけません。安全に再生するには、他のコントロールがインスタンス化されているオブジェクト(ページの上部近く)を再インスタンス化します。設計者は、プロパティなどの空白を埋める必要があります。
これにより、コントロールもツールボックスに返されます。
アプリケーションの1つで同じ問題が発生し、解決策が見つかりませんでした。そこで、ユーザーコントロールとカスタムコントロールを手動で作成しました。もう一度ウェブを検索した後、デザイナーがこの特定のプロジェクトに失敗した理由をようやく見つけました。答えは、プロジェクトは64ビットであり、Visual Studioにはまだ64ビットバージョンがなく、32ビットのままであるということです。したがって、デザイナーは64ビットアプリケーションまたはクラスライブラリにコントロールを読み込むことができませんでした。これに関するマイクロソフトの記事を読んでください。 Visual StudioのWebサイトに記事がありましたが、削除されました。 Visual Studioサポートフォーラムで回答をご覧ください。
最近同じ問題がありました。これ(このサイトやインターネットの他の回答も)は実際に私を助けてくれたので、私はそれを修正する方法を見つけました。
ファイルをクリーンアップして、ソリューションを再構築します。それと同じくらい簡単です。
ユーザーコントロールを手動で挿入する必要はありません。私には同じ状況があり、それに理由がありました。
私の場合、EXEアセンブリがCLRサポートタイプ/clr
を使用して「混合モード」にコンパイルされたため、失敗しました。タイプ/clr:pure
を設定して「管理専用」に変更した後、機能しました。
詳細については、 私の回答はここで を参照してください。
ソースコントロールの以前の作業コピーからほとんど変更を加えていない大きなカスタムコントロールでこの問題を何時間もスクラッチした後、すべてのコードを新しいコントロール名とファイルにコピーし、すべてが機能しました。
これは、デバッガーが協調しないため、コードの問題のある行を特定するためです。コピーされたコントロールは(サポートコードとモジュールのヒープと共に)正常に機能しました。
だからこれらは私の元のコードを修正した非常に簡単なステップです
ステップ4はオプションの場合がありますが、ソース管理があり、それがライブラリー内にある場合は、これを行う必要があります。
これにより、(私の知る限り)機能していないすべてのフォームにコントロールが戻りました。どうやらそれが好きではないことを覚えているのはVSの問題のようです?
これが役に立てば幸いです。修正を忘れたときに、次のメッセージが表示されたときにこのメッセージが見つかるといいのですが:)
追伸ソリューションのクリーン、再構築、および/または再実行は、この問題の古いスタンバイですが、今回はそれらの全体(DLL)クラスの1つのカスタムコントロールにすぎませんでした。お役に立てれば。
私は、userControlを追加した後、最初にアプリケーションを再構築し、次にプロジェクトに移動してツールボックスの項目を更新しました。
AnyCPUに変更し、プロジェクトを再ビルドします。 Visual Studioには、64ビットのコントロールに関する問題があります。
私の場合、作成されたユーザーコントロールのヘッダーファイルを、これらのコントロールが使用されるフォームの上部に手動で含めるのに役立ちました。
Form.designerファイルに、そのタイプの取り残されたプロパティがあるかどうかを確認します。それは何度か私に起こりました。その行を削除してプロジェクトを再構築した後、すべてが機能し始めました。