1

単純なプロジェクトを試して、独自の (非常に基本的な) データ バインディングを作成します。

データベース列に関するメタ情報を格納するクラス FIELD_DESCRIPTOR があります。実際のフィールドを表す追加のクラス FIELD があり、対応する FIELD_DESCRIPTOR クラスへの参照が含まれます。

2か所引っかかってます。

まず、FIELD_DESCRIPTOR クラスに、フロント エンドでフィールドがマップされる Windows フォーム コントロールの種類を格納するプロパティが必要です。たとえば、MAPPED_CONTROL_TYPE などのプロパティが必要です。そして、このプロパティに TextBox、ComboBox などを格納できるはずです。文字列プロパティを使用して、それで終了する必要がありますか? それとももっと良い方法がありますか?理想的には、ある種のコントロール型の列挙を使用したいと思います。

次に、フィールドがマッピングされた実際のコントロールへの参照/ハンドルを格納する必要があります。(フォーム上の実際のコントロールの参照を渡すことでこれを行うことができると思います。)

これを実装するにはどうすればよいですか? このプロパティを定義するには、どの種類の dataType を使用する必要がありますか?

(.Net 3.5 を使用、WPF なし)

ありがとうございます。

4

1 に答える 1

2

まず、FIELD_DESCRIPTORクラスに、フィールドがフロントエンドでマップされるWindowsフォームコントロールの種類を格納するプロパティが必要です。たとえば、MAPPED_CONTROL_TYPEなどのプロパティが必要です。そして、このプロパティにTextBox、ComboBoxなどのいずれかを格納できるはずです。文字列プロパティを使用してそれで済ます必要がありますか?それとももっと良い方法はありますか?理想的には、ある種の制御タイプの列挙を使用したいと思います。

System.Windows.Forms.TextBoxのように、完全修飾型の名前が思い浮かびます。これは一意である必要があり、必要に応じて動的作成に常に使用できます。

次に、マップされたフィールドの実際のコントロールへの参照/ハンドルを保存する必要があります。(フォーム上の実際のコントロールの参照を渡すことで、これを実行できると思います。)

実際、System.Windows.Forms.Controlなどのタイプを使用して参照を格納できます。その場合は、メモリリークが発生しないように注意してください。つまり、コントロールが不要になった場合は、ルックアップでその参照を保持しないでください。保持しないと、破棄されなくなります。

于 2012-10-11T13:37:29.220 に答える