web-dev-qa-db-ja.com

複数の「画面」を持つWinformアプリを構築する適切な方法は何ですか

複数の「画面」を持つWinformアプリを構築する適切な方法は何ですか?たとえば、小さなバックアッププログラム(主にクスクス)を作成しようとしています。フォームにコントロールとコンテナーをダンプしています。

パネルとグループボックスを使用してさまざまな画面を分離しています(例:パネルを使用して[設定]ウィンドウのすべてのコントロールを保持し、別のパネルで現在設定されているすべてのバックアップを表示しています)。さて、私のform.csファイルは膨大な量のコードに膨らみ、何か間違っているように感じます。ファイルに何も見つからず、最初からやり直す準備ができています。このプロジェクトは、C#と.NETの知識を広げるためだけのものだったので、新しいプロジェクトを開始することは大したことではありません。

11
CurtisHx

UIの複雑さを制御する方法はいくつかあります。

  • 多くのフォームがある場合、遷移を管理するデザインパターンを選択できます。たとえば、 アプリケーションコントローラ 、または金属に近い: 状態 です。
  • コントロールのグループを単一のコントロールに構成できます。 winformsでは、 ユーザーコントロール を使用します。
  • フォーム上のコントロールの数ではなく、フォーム内のコードの量が複雑さの原因である場合は、標準のオブジェクト指向プログラミング手法を使用して、コードをオブジェクトにカプセル化するだけです。 [〜#〜] solid [〜#〜] の原則を理解することから始めてください。
  • それ以外の場合は、ユーザーインターフェイスを操作するためのパターンがあります。とりわけ(懸念の分離が目立つ)、それらはコードの編成を容易にします。一般的なものは [〜#〜] mvc [〜#〜][〜#〜] mvp [〜#〜][〜#〜 ] mvvm [〜#〜]

あなたの説明から、カスタムパネルを使用して、今のところパネルを使用しているものを置き換えます。次に、それらのユーザーコントロールを、パネルが配置されていたフォームに配置します。

10
Steven Evers

Winformsでは、各フォームは独自のジョブを処理する必要があります。設定用のフォーム、現在のバックアップを表示するためのフォームなどが必要です。

単一形式の複数グループを使いたい場合は、SnOrfusが言ったように、User Controlsを作成してコードを分離できます。それでもいくつかのクラスで大量のコードが発生する場合は、 Partial classes を使用して、異なるコードを異なるファイルに分離できます。

部分クラスは良い代替案のように思えるかもしれませんが、趣味のプロジェクトを構築しているので、それだけをお勧めします。より大きくまたはより複雑なプロジェクトでは、パターンを使用して適切な作業を適切なオブジェクトに委任する必要があります。また、 [〜#〜] wpf [〜#〜] のような新しいテクノロジーに切り替えることもできます[〜#〜] mvvm [〜#〜]のようなパターンを使用する方が簡単です。

4
Valter Costa