1

すでに作成した別のフォームから継承してフォームを作成しようとしています。これは、元のフォームには実際には3つの状態があり、継承構造により、デバッグ、理解、および改善が容易になるためです。

問題は、私のVisualStudio2008フォームデザイナーがこのアイデアにうまく対応していないことです。設計できるフォームの代わりに、次のエラーメッセージが表示されます。

このファイル内のどのクラスも設計できないため、このファイルの設計者を表示できませんでした。デザイナは、ファイル内の次のクラスを検査しました。AliExpressForm---基本クラス「MyBaseForm」をロードできませんでした。アセンブリが参照されていること、およびすべてのプロジェクトがビルドされていることを確認してください。

基本的に、継承されたフォームはデザイナに表示されませんが、元のフォームはデザイナで正常に機能します。

これは非常に苛立たしいことだったので、問題がVS2008のせいではないことを確認するために、新しいクリーンなフォームプロジェクト(.net 2.0)を作成し、Form1と呼ばれるフォームとForm1から継承した別のフォーム(Form2)を作成しました。このプロジェクトは問題なく機能します。デザイナーでForm1を確認でき、Form2でForm1に追加したラベルを確認できますが、Form1に属しているためForm2で移動できません。

私のテストの結果は、私のVisualStudioが実際に機能することを証明しています。それが機能する必要がある私の元のプロジェクトではありません。私が試したもう1つのことは、VS2008ガイドを使用して継承されたフォームを作成するときに、継承ピッカーを介して継承されたFromを作成することでした。私のテストプロジェクトでは、作成したすべてのフォームを見ることができますが、オリジナルでは何も選択できません。binフォルダー内のexeファイルを参照しようとしましたが、選択できるフォームが表示されません。

また、プロジェクトを再構築し、プロジェクトをクリーンアップし、VS2008を再起動して、奇妙な状態になることを期待しましたが、何も役に立ちません。プロジェクトファイルはやや古く、ファイルや要素がたくさんあるため、Designerに干渉する可能性のある奇妙なプロジェクト設定があるという考えを却下しません。しかし、私が得たエラーの説明のために、これはありそうもないと思います(まだこれを調査しています)。

私は、Googleの検索フィールドに何を入力したり、リンクブラウジングを行ったりしても、同じ記事、フォーラム、またはブログを取得できるようになるまでインターネットを精査してきましたが、成功しませんでした。何が私の問題を引き起こす可能性があるかについてのアイデアや提案がありますか?この時点でのヘルプ、ヒント、提案は大歓迎です。

前もって感謝します。

4

1 に答える 1

5

私は問題を理解しました。私の同僚が私の問題を解決したいと思って、彼のコンピューターで同じプログラムを起動したとき、私はハンス・パッサントの提案に取り組んでいました。驚いたことに、彼のデザイナーは同じプロジェクトに取り組んでいました。ビルド構成を確認するまで、私たちは両方ともそれに困惑していました。

私の質問で言及するのを忘れたのは、サードパーティのdllが原因で、特定のプロジェクトをx64または86xプラットフォーム用にビルドする必要があるということです。これは通常、通常のフォームを操作する場合、デザイナにとって問題にはなりませんが、継承されたフォームに関しては、デザイナは実際に、継承されたフォームを表示するためにベースフォームを実行する必要があります。

私の同僚のビルド構成はx86に設定され、私のものはx64に設定されました。どちらもVS2008(86x)バージョンを実行しています。つまり、設計者は86xプラットフォームでビルドされている可能性があります。私たちの結論は、フォームをx64で作成した場合、設計者はそれを実行する方法を知らないということでした。そこで、ターゲットプラットフォームを64xから86xに変更してみました。VSでフォームを閉じてプロジェクトを再構築した後、デザイナーは再び作業しました。

確かに、新しい空のクリーンプロジェクトでテストしてみました。2つのフォームを作成しました。1つはベースを継承し、もう1つはベースから継承します。デフォルトでは、ビルド構成は「AnyCPU」であり、デザイナーは正常に機能します。しかし、構成を「x64」に変更すると、デザイナーは予想どおりに再び失敗しました。そして、「x86」に切り替えると、期待どおりに問題が解決しました。

したがって、プラットフォーム固有のプロジェクトで継承されたフォームを使用する場合は、常にVS2008プラットフォームバージョン(私の場合はx86。VisualStudio 2008のx64バージョンがあるかどうかはわかりません)と同じプロジェクトプラットフォームバージョンで設計してください。元のプロジェクトでは、何らかの理由で継承ピッカーを使用できませんが、コードの継承は魅力のように機能します。

于 2012-07-19T06:41:50.270 に答える