Windows フォーム DataGridView コントロールの列型

DataGridView コントロールではいくつかの列型を使用して、その情報を表示し、ユーザーが情報を変更または追加できるようにします。

DataGridView コントロールをバインドし、AutoGenerateColumns プロパティを true に設定すると、バインドされたデータ ソースに含まれるデータ型に適した既定の列型を使用して列が自動的に生成されます。

任意の列クラスのインスタンスを自分で作成し、Columns プロパティによって返されるコレクションに追加することもできます。 これらのインスタンスは、バインドされていない列として使用するように作成することも、手動でバインドすることもできます。 手動でバインドされた列は、ある型の自動生成された列を別の型の列に置き換える場合などに便利です。

次の表では、DataGridView コントロールで使用できるさまざまな列クラスについて説明します。

クラス 説明
DataGridViewTextBoxColumn テキストベースの値と共に使用されます。 数値および文字列にバインドするときに自動的に生成されます。
DataGridViewCheckBoxColumn Boolean および CheckState 値と共に使用されます。 これらの型の値にバインドするときに自動的に生成されます。
DataGridViewImageColumn イメージを表示するために使用されます。 バイト配列、Image オブジェクト、または Icon オブジェクトにバインドするときに自動的に生成されます。
DataGridViewButtonColumn セルにボタンを表示するために使用されます。 バインド時に自動的に生成されません。 通常、バインドされていない列として使用されます。
DataGridViewComboBoxColumn セル内のドロップダウン リストを表示するために使用されます。 バインド時に自動的に生成されません。 通常、データバインドは手動で行われます。
DataGridViewLinkColumn セル内のリンクを表示するために使用されます。 バインド時に自動的に生成されません。 通常、データバインドは手動で行われます。
カスタム列の型 DataGridViewColumn クラスまたはその派生クラスのいずれかを継承することによって独自の列クラスを作成し、カスタムの外観、動作、またはホストされたコントロールを指定できます。 詳細については、「方法: Windows フォーム DataGridView コントロールのセルと列を、それぞれの動作と外観を拡張してカスタマイズする」を参照してください

これらの列の型については、以下のセクションで詳しく説明します。

DataGridViewTextBoxColumn

DataGridViewTextBoxColumn は、数値や文字列などのテキストベースの値で使用される汎用の列型です。 編集モードでは、アクティブ セルに TextBox コントロールが表示されます。これにより、ユーザーはセル値を変更することができます。

セル値は自動的に文字列に変換されて表示されます。 ユーザーが入力または変更した値は、適切なデータ型のセル値を作成するために自動的に解析されます。 DataGridView コントロールの CellFormatting および CellParsing イベントを処理することによって、これらの変換をカスタマイズできます。

列のセル値のデータ型は、列の ValueType プロパティで指定されます。

DataGridViewCheckBoxColumn

DataGridViewCheckBoxColumnBoolean および CheckState 値と共に使用されます。 Boolean 値は、ThreeState プロパティの値に応じて、2 つの状態または 3 つの状態のチェック ボックスとして表示されます。 列が CheckState 値にバインドされている場合、ThreeState プロパティの値は既定で true になります。

通常、チェック ボックスのセル値は、他のデータと同様にストレージ用、または一括操作を実行するためのものです。 ユーザーがチェック ボックスのセルをクリックしたときにすぐに応答する必要がある場合は、CellClick イベントを処理できますが、このイベントはセルの値が更新される前に発生します。 クリック時の新しい値が必要な場合は、現在の値に基づいて期待される値を計算する方法があります。 もう 1 つの方法は、変更をすぐにコミットし、それに応答する CellValueChanged イベントを処理することです。 セルがクリックされたときに変更をコミットするには、CurrentCellDirtyStateChanged イベントを処理する必要があります。 ハンドラーで、現在のセルがチェック ボックスセルの場合は、CommitEdit メソッドを呼び出し、Commit 値を渡します。

DataGridViewImageColumn

DataGridViewImageColumn はイメージを表示するために使用されます。 イメージ列は、データ ソースから自動的に設定することも、バインドされていない列に対して手動で設定することも、CellFormatting イベントのハンドラーに動的に設定することもできます。

データ ソースからのイメージ列の自動設定では、さまざまなイメージ形式のバイト配列が使用されます。これには、Image クラスでサポートされるすべての形式や、Microsoft® Access および Northwind サンプル データベースで使用される OLE 画像形式などが含まれます。

イメージ列の手動による設定は、DataGridViewButtonColumn の機能を提供する (ただし、外観はカスタマイズされている) 場合に便利です。 DataGridView.CellClick イベントを処理して、イメージ セル内でのクリックに応答することができます。

CellFormatting イベントのハンドラーでイメージ列のセルを設定すると、イメージ以外の形式で計算値または値のイメージを指定する必要がある場合に便利です。 たとえば、アイコンとして表示する "high""middle"、および "low" などの文字列値を含む "リスク" 列がある場合があります。 また、イメージのバイナリ コンテンツではなく、読み込む必要があるイメージの場所を含む "イメージ" 列がある場合もあります。

DataGridViewButtonColumn

DataGridViewButtonColumn を使用すると、ボタンを含むセルの列を表示できます。 これは、ユーザーが特定のレコードに対して簡単にアクションを実行できるようにする場合に便利です。たとえば、注文したり、子レコードを別のウィンドウに表示したりする場合です。

DataGridView コントロールのデータバインド時に、ボタン列が自動的に生成されることはありません。 ボタン列を使用するには、それらを手動で作成し、DataGridView.Columns プロパティによって返されるコレクションに追加する必要があります。

DataGridView.CellClick イベントを処理することにより、ボタン セルでのユーザー クリックに応答できます。

DataGridViewComboBoxColumn

DataGridViewComboBoxColumn を使用すると、ドロップダウン リスト ボックスを含むセルの列を表示できます。 これは、Northwind サンプル データベース内の Products テーブルの Category 列など、特定の値のみを含むことができるフィールドのデータ入力に便利です。

すべてのセルに使用されるドロップダウン リストは、Items プロパティによって返されるコレクションを通じて手動で、または DataSourceDisplayMember、および ValueMember プロパティを使用してデータ ソースにバインドすることによって、ComboBox ドロップダウン リストを設定するのと同じ方法で設定できます。 詳細については、「ComboBox コントロール」を参照してください。

System.Windows.Forms.DataGridViewComboBoxColumnDataPropertyName プロパティを設定することによって、DataGridView コントロールで使用されるデータ ソースに実際のセル値をバインドできます。

DataGridView コントロールをデータバインドするときに、コンボ ボックス列が自動的に生成されることはありません。 コンボ ボックス列を使用するには、それらを手動で作成し、Columns プロパティによって返されるコレクションに追加する必要があります。

DataGridViewLinkColumn

DataGridViewLinkColumn を使用すると、ハイパーリンクを含むセルの列を表示できます。 これは、データ ソース内の URL 値に便利です。また、子レコードを含むウィンドウを開くなどの特殊な動作のボタン列の代わりに使用することもできます。

DataGridView コントロールをデータバインドするときに、リンク列が自動的に生成されることはありません。 リンク列を使用するには、それらを手動で作成し、Columns プロパティによって返されるコレクションに追加する必要があります。

CellContentClick イベントを処理することにより、リンクのユーザー クリックに応答できます。 このイベントは、ユーザーがセル内の任意の場所をクリックしたときに発生する CellClick および CellMouseClick イベントとは異なります。

DataGridViewLinkColumn クラスには、リンクのクリック前、中、後の表示を変更するためのプロパティがいくつか用意されています。

関連項目