2

私の最近のプロジェクトでは、そこにかなりの作業がある良い段階に達しましたが、簡単に変更/修正できないものは何もありません。私は今、追加するように求められました..これを説明する方法..私のプログラムにさまざまな「モード」を追加してください。

  • プログラムがよりグラフィカルな表示であり、すべてがマップ/その他の表示に描画されることに基づいて機能するマップビューモード。
  • プログラムがテキストなどに基づいているデータグリッドモード。

この情報を変数に保存できます。たとえば、「マップ」または「データグリッド」を保持する文字列でさえ、プログラムはこれに基づいてGUI /そのプロセス、または列挙型を作成しますが、これは物事を移動する必要があることを意味しますもう少しだと思います。

public string mode; 
// then use dropdowntools to set this to "map" or "datagrid"

public enum mode
{
   map,
   datagrid
};
// again use dropdowntools

UIコーディング/フォームの主要部分をマップ用とデータグリッド用の2つの別々のクラスに移動し、ユーザーの選択と必然的に設定した変数に基づいて必要に応じてこれらを作成するのが最善ですか?

ユーザーがこれらの種類のオプションを変更できるほとんどのアプリケーションでこれが行われているのを見てきましたが、それをコーディングするためのベストプラクティスは見たことがありません。

現在、私はこのように設定することを考えています。

  public void pollDevices()
    {

            if (mode == "Map")
            {
                timer = new System.Timers.Timer(500);

                 for (int i = 0; i <= mDevices.Count - 1; i++)
                 {
                     IDeviceInterface deviceToPoll = mDevices[i];
                     timer.Elapsed += delegate { deviceToPoll.connect(deviceToPoll, this, exit); };

                 }
            timer.Enabled = true;
            }


            else if (mode == "Datagrid")
            {

            }
        }

しかし、さまざまなモードのコード ブロックを他のクラスに移動し、これらを mainGUI から呼び出すのが最善でしょうか?

 public void pollDevices()
{

        if (mode == "Map")
        {
            //call method in map class that does this stuff.

        }


        else if (mode == "Datagrid")
        {
             //call method in datagrid class that does this stuff
        }
    }

この種のことをどのように行うかについて誰かが意見を持っていれば、それは大きな助けになるでしょう. 私からさらに情報が必要な場合は、お尋ねください。

4

1 に答える 1

2
  1. 表示コンポーネントを個々のコントロールに分割します。1 つはマップ用、もう 1 つはグリッド用です。
  2. 両方のコントロールで使用される共通のインターフェイスとデータ ソースを作成する
  3. いずれかのコントロールにデータを提供する共通のクラスまたはクラスのセットを作成します
于 2012-06-26T08:27:50.317 に答える