DataGridView コントロールのアーキテクチャ (Windows フォーム)

DataGridView コントロールとその関連クラスは、表形式データを表示および編集するための柔軟で拡張可能なシステムとして設計されています。 これらのクラスはすべて、System.Windows.Forms 名前空間に含まれていて、名前にはすべて "DataGridView" というプレフィックスが付けられています。

アーキテクチャの要素

主な DataGridView コンパニオン クラスは、DataGridViewElement から派生されます。 次のオブジェクト モデルで示しているのは、DataGridViewElement 継承階層です。

Diagram that shows the DataGridViewElement Object Model hierarchy.

DataGridViewElement クラスでは親である DataGridView コントロールへの参照が提供され、DataGridViewElementStates 列挙型からの値の組み合わせを表す値を保持する State プロパティが用意されています。

以下のセクションでは、DataGridView コンパニオン クラスについて詳しく説明します。

DataGridViewElementStates

DataGridViewElementStates 列挙体には次の値が含まれます。

この列挙型の値はビットごとの論理演算子と組み合わせることができます。したがって、State プロパティで一度に複数の状態を表すことができます。 たとえば、DataGridViewElement を同時に FrozenSelectedVisible とすることができます。

セルとバンド

DataGridView コントロールは、セルとバンドという 2 種類の基本的なオブジェクトで構成されています。 すべてのセルは、DataGridViewCell 基底クラスから派生されます。 2 種類のバンド (DataGridViewColumnDataGridViewRow) はどちらも、DataGridViewBand 基底クラスから派生されます。

DataGridView コントロールはいくつかのクラスと相互運用されますが、最もよく対象となるのは DataGridViewCellDataGridViewColumn、および DataGridViewRow です。

DataGridViewCell

セルは、DataGridView のやりとりの基本単位です。 表示はセルの中央に配置され、多くの場合、データ入力はセルを通じて実行されます。 セルにアクセスするには、DataGridViewRow クラスの Cells コレクションを使用し、選択したセルにアクセスするには DataGridView コントロールの SelectedCells コレクションを使用します。 次のオブジェクト モデルでは、この使用方法と DataGridViewCell 継承階層を示します。

Diagram that shows the DataGridViewCell Object Model hierarchy.

DataGridViewCell 型は抽象基底クラスであり、すべてのセルの派生元となります。 DataGridViewCell とその派生型は Windows フォーム コントロールではありませんが、一部はホスト Windows フォーム コントロールです。 セルによってサポートされる編集機能はいずれも、通常、ホストされたコントロールによって処理されます。

DataGridViewCell オブジェクトは、Windows フォーム コントロールのように独自の外観および描画機能を制御するようになっていません。 代わりに、DataGridViewCell オブジェクトの外観は、DataGridView によって制御されます。 DataGridView コントロールのプロパティおよびイベントとやりとりすることにより、セルの外観と動作に大きな影響を与えることができます。 DataGridView コントロールの機能を超えるカスタマイズについて特別な要件がある場合は、DataGridViewCell またはその子クラスの 1 つから派生させた独自のクラスを実装することができます。

次の一覧に DataGridViewCell から派生させたクラスを示します。

DataGridViewColumn

DataGridView コントロールにアタッチされたデータ ストアのスキーマは、DataGridView コントロールの列で表現されます。 DataGridView コントロールの列にアクセスするには、Columns コレクションを使用します。 選択した列にアクセスするには、SelectedColumns コレクションを使用します。 次のオブジェクト モデルでは、この使用方法と DataGridViewColumn 継承階層を示します。

Diagram that shows the DataGridViewColumn Object Model hierarchy.

主なセル型の中には、対応する列型を持つものがあります。 これらは、DataGridViewColumn 基底クラスから派生されています。

次の一覧に DataGridViewColumn から派生させたクラスを示します。

DataGridView 編集コントロール

高度な編集機能をサポートするセルでは、通常、Windows フォーム コントロールから派生させた、ホストされるコントロールが使用されます。 これらのコントロールによって、IDataGridViewEditingControl インターフェイスも実装されます。 次のオブジェクト モデルは、これらのコントロールの使用方法を示しています。

Diagram showing the DataGridView Editing Control Object Model hierarchy.

DataGridView コントロールには、次の編集コントロールが用意されています。

独自の編集コントロールを作成する方法については、「方法: Windows フォーム DataGridView Cells でコントロールをホストする」を参照してください。

次の表に、セルの型と列の型と編集コントロールの間の関係を示します。

セルの型 ホストされるコントロール 列の型
DataGridViewButtonCell 該当なし DataGridViewButtonColumn
DataGridViewCheckBoxCell 該当なし DataGridViewCheckBoxColumn
DataGridViewComboBoxCell DataGridViewComboBoxEditingControl DataGridViewComboBoxColumn
DataGridViewImageCell 該当なし DataGridViewImageColumn
DataGridViewLinkCell 該当なし DataGridViewLinkColumn
DataGridViewTextBoxCell DataGridViewTextBoxEditingControl DataGridViewTextBoxColumn

DataGridViewRow

DataGridViewRow クラスを使用すると、DataGridView コントロールがアタッチされているデータ ストアからのレコードのデータ フィールドを表示できます。 DataGridView コントロールの行にアクセスするには、Rows コレクションを使用します。 選択した行にアクセスするには、SelectedRows コレクションを使用します。 次のオブジェクト モデルでは、この使用方法と DataGridViewRow 継承階層を示します。

Diagram that shows the DataGridViewRow Object Model hierarchy.

独自の型を DataGridViewRow から派生させることもできますが、通常、それは必要ありません。 DataGridView コントロールには、その DataGridViewRow オブジェクトの動作をカスタマイズするための行関連のイベントとプロパティがいくつかあります。

DataGridView コントロールの AllowUserToAddRows プロパティを有効にすると、新しい行を追加するための特殊な行が最後の行として表示されます。 この行は、Rows コレクションに含まれていますが、注意が必要な特別な機能を備えています。 詳細については、「Windows フォーム DataGridView コントロールにおける新規レコード行の使用」を参照してください。

関連項目