2

機能が制限されたアプリのいくつかのバージョンの作成を検討しています。単純なバージョンでは不要なコードを除外したいと考えています。WinForms アプリであるため、バージョンごとに UI を変更する必要があります。制限されたコントロールは表示されません。

自動生成されたコントロールとレイアウト コードの一部に条件付きコンパイル ステートメントで注釈を付けようとしましたが、WinForms デザイナーを介して何かに触れるとすぐに VS がすべてのコードを破棄することを発見しました。

いくつかのイベント ハンドラーと UI コントロールを条件付きでコンパイルできるようにしたいと考えています。デザイナー ファイルの外側に条件付き UI コードを記述できますが、VS デザイナーを使用してアプリを編集することはできません。デザイナーで?

ありがとう!

4

1 に答える 1

1

UI フォームがどのように見えるかを知らなくても、おそらくすべてのバージョンで機能を共有するベース フォームを作成できます。次に、特定の機能のフォームでサブクラス化します。このようにして、1 つのフォーム内でコントロールのオン/オフを切り替えるのではなく、サブフォームを条件付きでコンパイルできます。ただし、通常、サブフォームはフォームを下方向に拡張するため、この場合、フォーム全体にコントロールを織り込むことは機能しない可能性があります。

また、MVC や MVP などのプレゼンテーション パターンを使用する場合 (まだ行っていない場合) は、フォームにあるロジックを最小限に抑え、それをプレゼンター/コントローラー、またはバージョンに基づいて構成できるビジネス クラスにプッシュすることもできます。あなたは反対にコンパイルしています。これらのクラスは、構成に基づいてアプリケーションに注入 (DI) できます。

もう 1 つのオプションは、フォーム コントロールをコンパイルするのではなく、実行中のバージョンに基づいて非表示にし、ビジネス クラスをコンパイルすることです。このようにして、重要な「知的」コードはアプリに含まれておらず、winform デザイナーと戦っていません。

于 2010-07-07T03:30:59.960 に答える