DataGridView コントロールのアーキテクチャ (Windows フォーム)
更新 : 2007 年 11 月
DataGridView コントロールとその関連クラスは、表形式のデータを表示および編集するための柔軟で拡張可能なシステムとして設計されています。これらのクラスはすべて System.Windows.Forms 名前空間に含まれており、どのクラス名にも "DataGridView" というプリフィックスが付いています。
アーキテクチャの要素
DataGridView の主要なコンパニオン クラスは DataGridViewElement から派生しています。次のオブジェクト モデルは、DataGridViewElement 継承階層構造を示しています。
DataGridViewElement オブジェクト モデル
DataGridViewElement クラスは親となる DataGridView コントロールへの参照を提供し、State プロパティを備えています。このプロパティは、DataGridViewElementStates 列挙体の値の組み合わせを表す値を取ります。
以下のセクションでは、DataGridView のコンパニオン クラスについて詳しく説明します。
DataGridViewElementStates
DataGridViewElementStates 列挙体には次の値が含まれます。
この列挙体の値はビット単位の論理演算子と組み合わせて使用できるため、State プロパティで一度に複数の状態を表現できます。たとえば、DataGridViewElement を Frozen かつ Selected かつ Visible の状態にすることができます。
セルとバンド
DataGridView コントロールは、セルとバンドという 2 種類の基本オブジェクトから構成されています。すべてのセルは DataGridViewCell 基本クラスから派生しています。バンドには DataGridViewColumn と DataGridViewRow の 2 種類があり、どちらも DataGridViewBand 基本クラスから派生しています。
DataGridView コントロールはさまざまなクラスとやり取りを行いますが、最もよく使用されるのは DataGridViewCell、DataGridViewColumn、DataGridViewRow です。
DataGridViewCell
セルは DataGridView で行われるやり取りの基本単位です。表示はセルを中心として行われますし、多くの場合、データ入力はセルを通じて実行されます。セルにアクセスするには、DataGridViewRow クラスの Cells コレクションを使用します。選択中のセルにアクセスするには、DataGridView コントロールの SelectedCells コレクションを使用します。次のオブジェクト モデルは、この使用方法と DataGridViewCell 継承階層構造を示しています。
DataGridViewCell オブジェクト モデル
DataGridViewCell 型は、すべてのセル型の派生元となる抽象基本クラスです。DataGridViewCell とその派生型は Windows フォーム コントロールではありませんが、その中のいくつかは Windows フォーム コントロールをホストします。セルで使用できる編集機能は、通常は、ホストされるコントロールによって処理されます。
DataGridViewCell オブジェクトの外観と描画機能は、Windows フォーム コントロールとは異なる方法で制御されています。DataGridViewCell オブジェクトの外観を制御しているのは DataGridView です。DataGridView コントロールのプロパティとイベントを操作することで、セルの外観と動作を大幅にカスタマイズです。DataGridView コントロールの機能を越える特殊なカスタマイズを行うときは、DataGridViewCell またはその子クラスから派生した独自のクラスを実装します。
DataGridViewCell から派生しているクラスを次に示します。
カスタムのセル型
DataGridViewColumn
DataGridView コントロールに関連付けられているデータ ストアのスキーマは、DataGridView コントロールの列で表現されます。DataGridView コントロールの列にアクセスするには、Columns コレクションを使用します。選択中の列にアクセスするには、SelectedColumns コレクションを使用します。次のオブジェクト モデルは、この使用方法と DataGridViewColumn 継承階層構造を示しています。
DataGridViewColumn オブジェクト モデル
いくつかの重要なセル型には、対応する列型があります。これらの型は DataGridViewColumn 基本クラスから派生しています。
DataGridViewColumn から派生しているクラスを次に示します。
カスタムの列型
DataGridView 編集コントロール
高度な編集機能をサポートしているセルは、通常は、Windows フォーム コントロールから派生したホストされるコントロールを使用しています。これらのコントロールは IDataGridViewEditingControl インターフェイスも実装しています。次のオブジェクト モデルは、これらのコントロールの使用方法を示しています。
DataGridView 編集コントロール オブジェクト モデル
次の編集コントロールは DataGridView コントロールによって提供されます。
独自の編集コントロールを作成する方法については、「方法 : Windows フォーム DataGridView Cells でコントロールをホストする」を参照してください。
次の表は、セル型、列型、編集コントロールの関係を示しています。
セル型 |
ホストされるコントロール |
列型 |
---|---|---|
適用なし |
||
適用なし |
||
適用なし |
||
適用なし |
||
DataGridViewRow
DataGridViewRow クラスは、DataGridView コントロールのバインド先のデータ ストアに含まれているレコードのデータ フィールドを表示します。DataGridView コントロールの行にアクセスするには、Rows コレクションを使用します。選択中の行にアクセスするには、SelectedRows コレクションを使用します。次のオブジェクト モデルは、この使用方法と DataGridViewRow 継承階層構造を示しています。
DataGridViewRow オブジェクト モデル
DataGridViewRow から独自の型を派生させることもできますが、通常はその必要はありません。DataGridView コントロールには、DataGridViewRow オブジェクトの動作をカスタマイズするための行関連のイベントとプロパティが数多く用意されています。
DataGridView コントロールの AllowUserToAddRows プロパティを有効にすると、新しい行を追加するための特殊な行が最終行として表示されます。この行は Rows コレクションの一部ですが、特殊な機能を備えているので注意が必要です。詳細については、「Windows フォーム DataGridView コントロールにおける新規レコード行の使用」を参照してください。
参照
概念
Windows フォーム DataGridView コントロールにおける新規レコード行の使用
参照
DataGridView コントロールの概要 (Windows フォーム)