0

いくつかのフォームとコントロールを含む winforms プロジェクトに取り組んでいます。それぞれが4か国語に翻訳されています。「PropertiesForm」と呼ばれる 1 つのフォームがありますが、これは維持するのが困難です。6 つのタブ ページを含むタブ コンテナーと、100 を超えるコントロールが含まれており、全体の一貫性を維持しようとする (そしてしばしば失敗する) 汚いコードが含まれています。

私はこのプロジェクトを担当しているので、このフォームに大きな変更を加えるのは避けようとしましたが、もう無理です。大きな変更を加えるのは難しく、時間がかかり、安定性の問題を引き起こす可能性があります。では、クリーンでわかりやすいコードを復元する最善の方法は何でしょうか?

私の考えは、各タブ ページに少なくとも 1 つのコントロールを作成し、それらをフォームで同期することです。私の問題は、ビジュアルスタジオでそれを行う簡単な方法がわからないことです. コピー&ペーストで消えてしまうので、翻訳とイベントハンドラを新しいコントロールに自動的に保持する方法はありますか? このタスク用に設計されたツールまたはアドインはありますか?

すべてを壊さずに構造をきれいにする方法は何ですか?

4

3 に答える 3

1

何が問題で、どのように修正するかは既にわかっています。すべてを小さな疎結合コンポーネントに分割し、フォームがそれらを連携させるようにします。

Model-View-Controllerパターンを見てみましょう。コンポーネントごとに個別のコントローラーを作成し、大きなフォームには小さなフォームを制御する独自のコントローラーを用意することをお勧めします。これは適切なイベント処理にとって重要です。コントロール イベントではなく、コントローラー イベントに接続してください。

于 2009-12-22T09:58:37.450 に答える
1

私の知る限り、そのようなツールは存在しません。また、どのような原則が存在するべきなのかわかりません。

単純に 6 つのユーザー コントロールを作成し、それぞれのコントロールの各タブ ページからコントロールを切り取り、新しく作成したコントロールに貼り付けます。その後、それぞれの UserContols でエラーのある関数をディスパッチして、すべてのエラーを修正します。ただし、タブ コントロールが別のタブからリンクされている場合、いくつかの「問題」が発生する可能性があります。

もう 1 つの方法は、ユーザー コントロール (日付/時刻コントロール、テキスト コントロール、ビジネス オブジェクト依存コントロール) を論理的に分離することです。

ただし、イベント ハンドラーやその他の部分は、ご自身で修正する必要があります。

于 2009-12-22T10:02:09.690 に答える
0

このような変更は、おそらくデザイン エディターではなく、コードで行う必要があります。あなたは、コピー&ペーストが物事を壊し始めると自分自身に言います.desingエディターはデザイン/レイアウトを作成するためのものですが、コードビハインドの処理にはあまり適していません.

6 つのタブ ページを 6 つの異なるファイルに分割し、実際のフォーム用に 1 つのファイルを作成することから始めることをお勧めします。次に、コードをざっと見て、機能的または論理的な共通パターン (つまり、再出現するように見える特定のコントロールのグループ、または頻繁に使用される特定のコード構造) を見つけることができるかどうかを確認します。それらを抽出し、別のクラスに配置して、元のファイルに適用します。典型的な例は、特定のスタイルが適用され、複数回使用されるコントロール ハットです。スタイルを管理する専用のクラス/関数を取得する必要があります。

その間、手順を文書化し、機能のテストを続けてください。

また、非常に重要です(質問ではそれについて話しませんが、おそらくそこにあります)は、基礎となるデータ構造/データベース/ファイルとの間でデータを取得する方法です。データと UI の間の通信を処理するアプリケーション専用の標準化された方法を提供し、すべてのコントロールがそれを使用するようにすることから始めることもできます。UI、データベース、またはその両方をリファクタリングすることを選択した場合、その通信ロジックを変更する必要がなければ、正しい方法で行ったことがわかります。

于 2009-12-22T10:06:25.310 に答える