次の方法で共有


Windows Forms DataGridView コントロールにおける列の種類

DataGridView コントロールでは、複数の列の種類を使用して情報を表示し、ユーザーが情報を変更または追加できるようにします。

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

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

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

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

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

DataGridViewTextBoxColumn

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

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

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

データグリッドビューのチェックボックス列 (DataGridViewCheckBoxColumn)

DataGridViewCheckBoxColumnは、Boolean値と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" などの文字列値を含む "リスク" 列があるとします。 または、イメージのバイナリ コンテンツではなく、読み込む必要があるイメージの場所を含む "Image" 列がある場合もあります。

DataGridViewButtonColumn (データグリッドビューのボタンカラム)

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

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

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

DataGridViewComboBoxColumn

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

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

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

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

DataGridViewLinkColumn

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

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

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

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

こちらも参照ください