2

プログラムに次のデータとオブジェクトがあります。

次のオブジェクトを含む DynamicObjectContainer。

  1. MeasurementParameters : DataContainer(DataContainer は基底クラスです)

このオブジェクトには多くのパブリック プロパティがあり、その名前は実行時にしかMeasurementParametersわかりません。また、使いやすいインターフェイスを使用して、クラスに含まれるプロパティの値にアクセスできるように、基本クラスに内部接続を設定しました。DataContainerMeasurementParameters

MeasurementParameters例: 「pumpspeed」(文字列型)という名前のプロパティがあるとします。この関数を使用して、そのプロパティの値にアクセスできます。

MeasurementParameters.GetStringValue("pumpspeed");

DataContainerオブジェクトの構築中にリフレクションを使用して、オブジェクト内にデリゲートのリストを内部的に作成することで、これを実現しました。(これは1回限りです。)

ここまでは順調ですね。

MeasurementParameters今、これらの値をウィンドウフォームに表示したいところに行き詰まっています。

私は実行時にプロパティ名しか知らないので、フォーム内の固定ラベルにプロパティ名 (スクリプト ファイルで彼だけが定義) をマップする方法をユーザーに提供する必要があります。したがって、ユーザーは次の形式でマッピング データをテーブルに保存します。

Entry : "pumpspeed" "label22"

データベースからこのマッピングを取得し、オブジェクトから必要なデータを取得MeasuremetParametersして、Windows フォームに表示するための高速で効率的な方法が必要です。

注 : これが 1 回限りの操作である場合は、多くの解決策があります。問題は 2 つあります。

  1. 物件数は膨大MeasurementParameters(約200件)
  2. オブジェクトには、そのMeasurementParametersプロパティを継続的に更新する関数が含まれています。SO 私のウィンドウフォームは、これらの関数を呼び出してオブジェクトデータを更新し、MeasurementParametersデータを取得して正しいラベルで表示する必要があります。

また、これは 1 秒あたり約 2 ~ 3 回のサイクルで発生するはずです。(理想的には)

これに対するソリューションの設計を手伝ってくれる人はいますか?? 一般的なオブジェクト構造と関係に関するアドバイスも役に立ちます。

必要に応じて、使用しているコードを投稿できます。

4

1 に答える 1

0

ここでは大きな問題は見られません

したがって、テーブル ObjectID、PropertyName、ControlName があります。

フォームを開く/オブジェクトを選択するときに、クエリを実行するDictionaryラベルの値を持つ PropertyName によってキー付けされたものを作成します (クエリからコントロールの名前で検索されます) イベントでプロパティの名前をスローするクラスに をMyForm.Controls.FindByName(Somename).追加しますOnPropertyChangedEventargs 次に、フォームにハンドラーを追加します

Mappings[e.PropertyName].Text = Object[e.PropertyName].GetStringValue;

フォーム上のラベルまたはパネルではない表示コントロールに対処するために、それをいじる必要があるかもしれませんが、それはただ打ちのめされるはずです。

于 2013-04-05T16:34:36.907 に答える