2012-02-06 12 views
1

私は本質的に賞賛されるテキストパーサーであるC#WinFormプログラムを持っています。それは16進数の行をとり、私に提示された仕様に基づいて人間が読める情報に変換します。私は情報を表示するために使用されるいくつかのタブページを持つタブコントロールを持っています。これらのタブページのいくつかは同一ですが、解析されたテキスト行に基づいて異なるタブにする必要があります。行のタイプが「A」の場合は、タブ 'A'の情報を表示します。タブ 'B'などに表示されます。複数のタブページでコントロール(つまりテキストボックス)を再利用する

私がこれに気付き始めている問題は、これらのタブページ全体にかなりのテキストボックスやその他のコントロールがあることです。パフォーマンスが少し向上していると思います。私は150以上のテキストボックスの範囲内で、同じチェックボックスなどについて、私は信じています。

複数のタブページにわたってコントロールの1ページを再利用し、それらのタブに基づいてさまざまな情報を表示する方法があるので、100個のコントロールを削減してプログラム自体を単純化することができます?

答えて

1

私はちょっと散歩したので、もう少し明確にするために、追加されたセクションを読んでください。

これをアーキテクチャ的に解決するには、いくつかの方法があります。基本的なコンセプトは、物理的な概念として「タブページ」を考えるのを止め、それを論理的に考え始めることです。論理的な概念として、実装では、タブページはコントロールのセットであり、そのうちのいくつかはユニークで、一部は共通(または複数のタブに共通)です。

純粋に動的なシステムでは、「コントロール」を入力し、人がクリックする「タブ」に応じて動的にペイントします。つまり、タブコントロールを使用する必要はありません。代わりに、ユーザーに表示する情報に基づいて「タブページ」をペイントします。

もう1つの方法は、既に「タブページ」にレイアウトされた一意の「コントロール」を残し、一意でないコントロールに追加できるコンテナを残します。これは、何のコントロールをどのページに表示する必要があるか、そして静的(タブ上に配置されたコントロール)のレイアウトと動的な絡み合いをどのように決定するかについて、少し考えています。言い換えれば、計画の少しはあなたに多くの悲しみを救うことができます。

いずれの方法でも、使用されたタブページの数にかかわらず、1つのコントロールを1回塗りつぶしたいとします。

追加:これはwinformsなので、考え方のパラダイムを少し変更する必要があります。あなたがwebformsの開発者だったら、すでにコンテナに関して考えていたでしょう。

1つのオプションは、タブの戦略パターンです。この戦略には、「タブページ」とページ上の位置とサイズをペイントするために必要なコントロールが含まれています。ユーザーがタブをクリックすると、「バケツのコントロール」に到達し、使用された「タブ」(戦略)に基づいて動的に追加されます。タブページを戦略に渡して動的に描画させることもできます。

答え全体の要点は、一度作業してから必要に応じて表示することです。

+0

あなたのご意見ありがとうございます。ありがとうございました! – Leaddore

0

このようなコントロールを再利用することはできませんが、最初にタブを表示したときにコントロールを作成することは可能です。

+0

コントロールは最終的にクラス(オブジェクト)であるため、コントロールの使い方やユーザーへの表示方法を制御できます。タブページの制約の中では、もう少し難しいですが、コントロールをページ(薄い)や他のタイプのコンテナ(パネル、タブページなど)に動的に追加できます。 平均的なWinForms開発者はWeb開発者のようには思っていないため、WinFormsではややこしくなっています。:-) –

関連する問題