2011-09-12 9 views
2

私のアプリケーションのメインフォームコードがかなり大きくなっている(問題?)があります。それはアプリケーションの主要な部分であるため、大量のイベントハンドラがあります。メインフォームがかなり大きくなりました。提案?

部分的なクラスを使用してコードのセクションを分割したいとは思わないので、リージョンを使用するだけでよいからです。部分的なフォームクラスもデザイナーには表示されず、一般的に混乱します。

正直言って何をすべきかわかりません。ファイルは約1,000行のコードで、他のすべてのクラスは10〜150行です。ほとんどのイベントハンドラはフォームのメンバ変数やクラスのメンバ変数を操作するため、多くのパラメータが渡され、混乱するため、他のオブジェクトに振る舞いをカプセル化することはできません。

考えられる行為を考えようとしています。私は本当に他のクラスに多くの動作をカプセル化したいと思いますが、問題はイベントハンドラがプライベートコントロールとメンバ変数を変更することです。 >これらのクラスは、何らかの形でこのデータにアクセスする必要があるだろうが、私はむしろちょうどクラスにフォームのインスタンスを与え、すべてのコントロールとメンバーのデータを公開することはありませ思います。>

任意のアイデア?ユーザーコントロールに

+0

私はあなたのコードを単純化する努力を拍手喝采し、私は以下の回答に同意しますが、私は1000行はあまりコードではないことを指摘しておきます。私はたくさんのWinFormsプロジェクトを見てきました*アプリケーション全体の*すべてのコードは同じフォームクラスにあります。これとは対照的に、複雑で複雑な作業を行っている場合、小さなクラスであっても、十分にファクタリングされたクラスでも1000行を超えることがあります。 –

答えて

6
  1. ブレイクそれを下に。
  2. フォームに、プレゼンテーションではないものがないことを確認します(ユーザーに表示、ユーザー入力のコレクション)。すべてのデータアクセスを別々のクラスに移動し、ビジネスロジックでも同じにします。
2

通常、フォームの一部をUserControlsにカプセル化して、内部イベント/コントロールを管理します。 UserControlは、Mainフォームから適切なデータを渡して/インスタンス化することができます。

関連する問題