0

状況:折りたたみ式パネルを作成しています。私のビジネスの状況では、パネルに次のことをサポートしてもらう必要があります。

  • 「方向」(つまり、上、下、左、または右にドッキングします)。これにより、折りたたむ方向やその他のいくつかの方向が変わります。

  • 「スタイル」。この製品には、いくつかの定義済みの視覚スタイルがあります(背景色、グラデーションの有無、テキストの色、ホバーの色などの定義)。

ここに問題があります:特定のスタイルは特定の方向と互換性がありません。要件は次のとおりです。

  • プログラマーが互換性のないスタイルと方向を持つようにパネルをコーディングした場合、プログラマーを防止/警告する何らかの方法が必要です。たとえば、互換性がない場合にパネルにランタイム例外をスローさせると、この要件が満たされます。

  • 実行時にスタイルまたは方向を動的に変更することを誰にも許可しないでください。必要に応じて、で「動的に」変更できるようにすることはできますがInitializeComponent、他の場所では変更できません。

  • パネルはデザインビューに表示される必要があります。ただし、必ずしもデザインビューでドラッグアンドドロップできるとは限りません。技術的には、デザインビューでパネルの属性を変更する必要もありません。可能であれば、私は明らかにそれらの他のもののいずれかが欲しいのですが。

考えられる解決策の1つ:コンストラクターに方向とスタイルの2つの入力を取得させます。そうすれば、両方の変更がアトミックアクションとして扱われます。両方を同時に変更しないと、方向/スタイルを変更してからもう一方を変更するまでの間、パネルは一貫性のない状態になります。それは避けたい。

デザインビューでデフォルトのコンストラクターを使用しないようにするにはどうすればよいですか、および/または要件を満たすためのより良い方法は何ですか?

ノート

パネルは単なる例であり、より広範な質問をするためのユースケースです。この投稿で、デザインビューに要件を処理させるためのベストプラクティスに関する直接的な質問に答えてもらいたいと思います。Visual Studioがデフォルト以外のコンストラクターの挿入をサポートしている場合は、そのInitializeComponent方法(およびそれに伴う警告)を知りたいと思います。記載されている要件を満たすより良い方法があれば、それも知りたいと思います。

4

2 に答える 2

3

ISupportInitialize設計者がすべてのプロパティを設定し、終了したときに通知するために使用できるインターフェイスのサポートを追加します。

于 2011-08-04T11:36:39.897 に答える
2

部分的な答え:Designerにカスタムコンストラクターを使用させることはできません。ロジックをプロパティセッターに配置する必要があります。

そこで例外をスローすると、厄介なDesignerエラーが発生する可能性があります。代わりに、フィールドを適切な状態にリセットするのはどうですか?

にいる場合は、動作を区別する必要がありますDesignMode。まだ読んでいない場合は、DesignModeの考慮事項を確認してください。

于 2011-08-04T11:30:39.733 に答える