アプリケーションで、DataGridView コントロール内のユーザーの選択に基づいてアクションを実行したい場合があります。 アクションによっては、可能な選択の種類を制限できます。 たとえば、アプリケーションで現在選択されているレコードのレポートを印刷するとします。 この場合、DataGridView コントロールを構成して、行内の任意の場所をクリックすると常に行全体が選択され、一度に 1 行しか選択できないようにすることができます。
DataGridView.SelectionMode プロパティを次のいずれかの DataGridViewSelectionMode 列挙値に設定することで、許可される選択を指定できます。
DataGridViewSelectionMode の値 | 説明 |
---|---|
CellSelect | セルをクリックすると、そこが選択されます。 行ヘッダーと列ヘッダーは選択に使用できません。 |
ColumnHeaderSelect | セルをクリックすると、そこが選択されます。 列ヘッダーをクリックすると、列全体が選択されます。 列ヘッダーは並べ替えに使用できません。 |
FullColumnSelect | セルまたは列ヘッダーをクリックすると、列全体が選択されます。 列ヘッダーは並べ替えに使用できません。 |
FullRowSelect | セルまたは行ヘッダーをクリックすると、行全体が選択されます。 |
RowHeaderSelect | 既定の選択モード。 セルをクリックすると、そこが選択されます。 行ヘッダーをクリックすると、行全体が選択されます。 |
注
実行時に選択モードを変更すると、現在の選択範囲が自動的にクリアされます。
既定では、ユーザーはマウスでドラッグするか、Ctrl キーまたは Shift キーを押しながら選択範囲を拡張または変更するか、左上のヘッダー セルをクリックしてコントロール内のすべてのセルを選択することで、複数の行、列、またはセルを選択できます。 この動作を回避するには、MultiSelect プロパティを false
に設定します。
FullRowSelect モードと RowHeaderSelect モードを使用すると、ユーザーは行を選択し、DELETE キーを押して行を削除できます。 ユーザーが行を削除できるのは、現在のセルが編集モードでなく、AllowUserToDeleteRows プロパティが true
に設定されていて、基になるデータ ソースがユーザー主導の行の削除をサポートしている場合のみです。 これらの設定は、プログラムによる行の削除を妨げるものではありません。
プログラムによる選択
現在の選択モードでは、プログラムによる選択とユーザー選択の動作が制限されます。
Selected
コントロールに存在するセル、行、または列の DataGridView プロパティを設定することで、現在の選択範囲をプログラムで変更できます。 選択モードに応じて、SelectAll メソッドを使用してコントロール内のすべてのセルを選択することもできます。 選択を解除するには、ClearSelection メソッドを使用します。
MultiSelect プロパティが true
に設定されている場合は、要素の DataGridView プロパティを変更することで、Selected
要素を選択に追加したり、選択から削除したりできます。 それ以外の場合は、Selected
プロパティを 1 つの要素に対して true
に設定すると、選択範囲から他の要素が自動的に削除されます。
CurrentCell プロパティの値を変更しても、現在の選択範囲は変更されないことに注意してください。
現在選択されているセル、行、または列のコレクションは、SelectedCells コントロールの SelectedRows、SelectedColumns、および DataGridView プロパティを使用して取得できます。 コントロール内のすべてのセルが選択されている場合、これらのプロパティへのアクセスは非効率的です。 この場合のパフォーマンスの低下を回避するには、最初に AreAllCellsSelected メソッドを使用します。 さらに、選択したセル、行、または列の数を決定するためにこれらのコレクションにアクセスすると、非効率的な場合があります。 代わりに、GetCellCount、GetRowCount、または GetColumnCount メソッドを使用して、Selected 値を渡す必要があります。
ヒント
選択したセルのプログラムによる使用を示すコード例については、DataGridView クラスの概要を参照してください。
こちらも参照ください
.NET Desktop feedback