1

私は多くのプロジェクトで解決策を持っています。1 つのプロジェクトには、いくつかのカスタム コンポーネントが含まれています。これらのコンポーネントの 1 つは、画像にタイトルを表示するために使用されます。背景の色やその他多くのことを変更できます。

問題は、コンポーネントの背景のデフォルトの色を変更するか、テキストの位置を変更することにした場合、それらの変更は、コンポーネントが使用されているソリューションの他のすべてのプロジェクトに反映されないことです。私はコンポーネントのプロジェクトをコンパイルし、他のすべてのプロジェクトはプロジェクトによってコンポーネントを参照します。

とりあえず、他のプロジェクトからコンポーネントを1つずつ外して、追加し直せばOKです。手っ取り早い方法はありますか?

更新 そのコンポーネント内に CheckBox を追加しましたが、チェックボックスはどこにでもあるようです! 罰金!ただし、プロパティにコンポーネントを変更できるタグ (背景色など) がある場合、「デフォルト」値は変更されず、代わりに古い値が変更された値としてプロパティに配置されます。そのため、プロパティ パネルの色を手動で変更していないときに追加した場合のように、古い値が設定されていることがわかります...

更新 2 代替テキスト http://img517.imageshack.us/img517/9112/oldonenewoneei0.png

更新 3:

この問題はまだここにあります。私がまだ道を見つけたいと思っていることを人々に知らせるためです。

私はあなたの提案をいくつか試しました。

  1. すべてのソリューションをクリーンアップし、カスタム コントロールを持つプロジェクトのみをビルドすると、ソリューションがビルドされます。何も変化しません (テストするために、コンポーネントの色を黄色に変更しました。何も変化しません:失敗します。
  2. 参照を削除してプロジェクトに追加し直してから、ソリューションを再構築するとします。デザイナで古い色が表示されます:失敗

私を助けたい人のために、より多くの情報と画像(上記)で質問を更新しました。

ご覧のとおり、コンポーネントの古い「コンパイル」では黄色の背景が表示されますが、(Visual Studio の左側のツールバーから) 新しいコンポーネントを挿入すると、想定される白い背景を持つ新しいコンポーネントを持つことができます...

4

5 に答える 5

1

これは、参照が原因である可能性が最も高いです。

他のプロジェクトは、おそらくコンポーネント プロジェクトへの参照をコピーします。これらの他のプロジェクトが変更されている場合は、参照されているコンポーネント プロジェクトに再コピーするために、これらの他のプロジェクトを再構築する必要があります。ビルド時にのみ更新されます。

それらを同じソリューションの一部にすることで、これをある程度回避できます。その場合、プロジェクトの依存関係を正しく設定することができ、ほとんど自動的に物事を処理するはずです。しかし、すべてを同じソリューションに収めることが常に正しいとは限りません。

それらが同じソリューションの一部であるか、参照の問題ではない場合は、コンポーネントのシリアライゼーションが原因である可能性があります。カスタム コントロールの開発を行っているときに、この癖に何度も遭遇しました。

于 2008-09-17T18:01:38.290 に答える
0

私の推測では、デザイナーは頭が良く、デザイナーにあるコンポーネントの設定を覚えているので、それをデフォルトと見なします。

于 2008-09-17T18:00:00.837 に答える
0

これは普通に聞こえません。ソリューションを右クリックして「Clean Solution」をクリックすると役立つ場合があります (各プロジェクトの bin ディレクトリからすべての dll と実行可能ファイルが削除され、新しいビルドが強制的に実行されます)。

ビルド順序を確認することもできます。

于 2008-09-17T18:00:32.693 に答える
0

私は同様の問題を抱えているプロジェクトに取り組んでいます.NET構成ファイルまたはアセンブリ情報ファイルに触れると(プロジェクトの種類によって異なります)。その後、他のプロジェクトにコンポーネントの変更が反映されます...

なぜこうなったのかはわかりませんが、これが私がそれを克服する方法です...

最近、私は Nant 経由ですべてを構築するように切り替えました。これで問題は完全に解決されます。

于 2008-09-17T18:02:33.437 に答える
0

ビジュアル デザイナは、既定値を持っている場合でも、コード ビハインドですべてのプロパティをシリアル化することがあります。

コンポーネントのデフォルトの背景色が赤で、デフォルトの背景色を青に変更した場合、そのコンポーネントを使用するコンポーネントはそれを赤に戻します。

于 2008-09-17T18:04:21.077 に答える