Windows フォーム DataGridView コントロールのサイズ変更オプションSizing Options in the Windows Forms DataGridView Control

DataGridView 行、列、およびヘッダーは、多くの異なるオカレンスの結果としてのサイズを変更できます。DataGridView rows, columns, and headers can change size as a result of many different occurrences. 次の表では、これらの出現回数を示します。The following table shows these occurrences.

見つかったOccurrence 説明Description
ユーザーによるサイズ変更User resize ユーザーは、ドラッグするか、行、列、またはヘッダー区分線をダブルクリックしてサイズ調整を行うことができます。Users can make size adjustments by dragging or double-clicking row, column, or header dividers.
コントロールのサイズ変更Control resize コントロールの幅が変更されたときの列フィル モードでは、列の幅を変更します。たとえばとユーザーの親フォームにコントロールがドッキングされているときに、フォームがサイズ変更します。In column fill mode, column widths change when the control width changes; for example, when the control is docked to its parent form and the user resizes the form.
セル値の変更Cell value change コンテンツ ベースの自動サイズ変更モードでは、サイズは、新しい表示値に合わせて変更します。In content-based automatic sizing modes, sizes change to fit new display values.
メソッド呼び出しMethod call プログラムによるコンテンツに基づくサイズ変更するには、メソッドの呼び出し時にセルの値に基づく便宜的サイズを調整することができます。Programmatic content-based resizing lets you make opportunistic size adjustments based on cell values at the time of the method call.
プロパティの設定Property setting 特定の高さと幅の値を設定することもできます。You can also set specific height and width values.

既定では、ユーザーによるサイズ変更が有効になっている、自動サイズ設定を無効にすると、およびその列よりも幅がセルの値をクリップします。By default, user resizing is enabled, automatic sizing is disabled, and cell values that are wider than their columns are clipped.

既定の動作を調整するかを特定のサイズ変更オプションを使用して、特定の効果を実現するために使用できるシナリオを次の表に示します。The following table shows scenarios that you can use to adjust the default behavior or to use specific sizing options to achieve particular effects.

シナリオScenario 実装Implementation
表示するため、使用して列フィル モードは、比較的少数の水平スクロール バーを表示せず、コントロールの幅全体を占有する列のデータを同様にサイズ。Use column fill mode for displaying similarly sized data in a relatively small number of columns that occupy the entire width of the control without displaying the horizontal scroll bar. AutoSizeColumnsMode プロパティを Fillに設定します。Set the AutoSizeColumnsMode property to Fill.
列フィル モードの使用は、さまざまなサイズの値を表示します。Use column fill mode with display values of varying sizes. AutoSizeColumnsMode プロパティを Fillに設定します。Set the AutoSizeColumnsMode property to Fill. 相対的な列の幅を列を設定して初期化FillWeightプロパティまたはコントロールを呼び出すことによってAutoResizeColumnsデータ コントロールのデータを読み込んだ後メソッド。Initialize relative column widths by setting the column FillWeight properties or by calling the control AutoResizeColumns method after filling the control with data.
列フィル モードを使用して、さまざまな重要度の値を使用します。Use column fill mode with values of varying importance. AutoSizeColumnsMode プロパティを Fillに設定します。Set the AutoSizeColumnsMode property to Fill. Large 設定MinimumWidth列で常にいくつかのデータの表示や以外のサイズ変更オプションを使用する必要があります塗りつぶしモードの特定の列の値します。Set large MinimumWidth values for columns that must always display some of their data or use a sizing option other than fill mode for specific columns.
列フィル モードを使用して、コントロールの背景色を表示しないようにします。Use column fill mode to avoid displaying the control background. 設定、AutoSizeModeする最後の列のプロパティFillし、その他の列の他のサイズ変更オプションを使用します。Set the AutoSizeMode property of the last column to Fill and use other sizing options for the other columns. その他の列が使用の使用可能な領域が多すぎる場合、設定、MinimumWidth最後の列のプロパティ。If the other columns use too much of the available space, set the MinimumWidth property of the last column.
アイコンまたは ID 列などの固定長列を表示します。Display a fixed-width column, such as an icon or ID column. 設定AutoSizeModeNoneResizableFalse列。Set AutoSizeMode to None and Resizable to False for the column. 幅を設定して初期化、Widthプロパティまたはコントロールを呼び出すことによってAutoResizeColumnデータ コントロールのデータを読み込んだ後メソッド。Initialize its width by setting the Width property or by calling the control AutoResizeColumn method after filling the control with data.
クリッピングを回避するために、領域の使用を最適化するセルの内容が変更されるたびに自動的にサイズを調整します。Adjust sizes automatically whenever cell contents change to avoid clipping and to optimize the use of space. コンテンツ ベースのサイズ変更モードを表す値を自動サイズ変更プロパティを設定します。Set an automatic sizing property to a value that represents a content-based sizing mode. パフォーマンスの低下を避けるためには、大量のデータを使用する場合、表示されている行のみを計算するサイズ変更モードを使用します。To avoid a performance penalty when working with large amounts of data, use a sizing mode that calculates displayed rows only.
多くの行を使用する場合は、パフォーマンスの低下を回避するために表示されている行の値に合わせてサイズを調整します。Adjust sizes to fit values in displayed rows to avoid performance penalties when working with many rows. 自動またはプログラムによってサイズ変更に適切なサイズ変更モードの列挙値を使用します。Use the appropriate sizing-mode enumeration values with automatic or programmatic resizing. スクロール中も新しく表示されている行の値に合わせてサイズを調整するサイズ変更メソッドを呼び出して、Scrollイベント ハンドラー。To adjust sizes to fit values in newly displayed rows while scrolling, call a resizing method in a Scroll event handler. ユーザーのダブルクリックをカスタマイズするサイズ変更表示されている行の値のみが、新しいサイズを判断できるようにサイズ変更のメソッドを呼び出す、RowDividerDoubleClickまたはColumnDividerDoubleClickイベント ハンドラー。To customize user double-click resizing so that only values in displayed rows determine the new sizes, call a resizing method in a RowDividerDoubleClick or ColumnDividerDoubleClick event handler.
または、パフォーマンスの低下を避けるために、ユーザーによるサイズ変更を有効にする特定の時点でのみセルの内容に合わせてサイズを調整します。Adjust sizes to fit cell contents only at specific times to avoid performance penalties or to enable user resizing. イベント ハンドラーでは、コンテンツ ベースのサイズ変更メソッドを呼び出します。Call a content-based resizing method in an event handler. などを使用して、 DataBindingComplete 、バインドした後にサイズを初期化して処理するイベント、CellValidatedまたはCellValueChangedユーザー編集または変更を補正するサイズを調整するイベントにバインドされたデータ ソース。For example, use the DataBindingComplete event to initialize sizes after binding, and handle the CellValidated or CellValueChanged event to adjust sizes to compensate for user edits or changes in a bound data source.
複数行のセルの内容の行の高さを調整します。Adjust row heights for multiline cell contents. 列の幅が段落のテキストを表示するために適切であることを確認し、自動またはプログラムによってコンテンツ ベースの行のサイズ変更を使用して、高さを調整します。Ensure that column widths are appropriate for displaying paragraphs of text and use automatic or programmatic content-based row sizing to adjust the heights. 使用して複数行のコンテンツを含むセルを表示することも確認、WrapModeセルのスタイル値Trueします。Also ensure that cells with multiline content are displayed using a WrapMode cell style value of True.

通常、列の幅を維持または行の高さを調整する前に特定の値に設定する列の自動サイズ変更モードを使用します。Typically, you will use an automatic column sizing mode to maintain column widths or set them to specific widths before row heights are adjusted.

マウスを使用してサイズ変更Resizing with the Mouse

既定では、ユーザーは行、列、およびセルの値に基づいて、自動サイズ変更モードを使用してヘッダーをサイズ変更できます。By default, users can resize rows, columns, and headers that do not use an automatic sizing mode based on cell values. ユーザーが列フィル モードなど、他のモードでのサイズを変更することを防ぐために、次の 1 つ以上を設定DataGridViewプロパティ。To prevent users from resizing with other modes, such as column fill mode, set one or more of the following DataGridView properties:

個々 の行または列をサイズ変更を設定してからユーザーを防ぐことができますもそのResizableプロパティ。You can also prevent users from resizing individual rows or columns by setting their Resizable properties. 既定では、Resizableプロパティの値がに基づいて、AllowUserToResizeColumns列のプロパティの値とAllowUserToResizeRows行のプロパティの値。By default, the Resizable property value is based on the AllowUserToResizeColumns property value for columns and the AllowUserToResizeRows property value for rows. 明示的に設定する場合ResizableTrueまたはFalse、ただし、コントロールの値がその行または列が、指定した値で上書きされます。If you explicitly set Resizable to True or False, however, the specified value overrides the control value is for that row or column. 設定ResizableNotSet継承を復元します。Set Resizable to NotSet to restore the inheritance.

NotSet値の継承を復元、Resizableプロパティを返すことは、NotSet値の行または列に追加されていない場合を除き、DataGridViewコントロール。Because NotSet restores the value inheritance, the Resizable property will never return a NotSet value unless the row or column has not been added to a DataGridView control. 確認する必要がある場合かどうか、Resizable行または列のプロパティの値の継承、確認、Stateプロパティ。If you need to determine whether the Resizable property value of a row or column is inherited, examine its State property. 場合、State値が含まれています、ResizableSetフラグ、Resizableプロパティの値は継承されません。If the State value includes the ResizableSet flag, the Resizable property value is not inherited.

自動サイズ変更Automatic Sizing

自動サイズ変更の 2 種類があります、DataGridViewコントロール: 列フィル モードとコンテンツ ベースの自動サイズ変更します。There are two kinds of automatic sizing in the DataGridView control: column fill mode and content-based automatic sizing.

列フィル モードでは、コントロールの表示領域の幅に合わせてコントロールで、表示する列が発生します。Column fill mode causes the visible columns in the control to fill the width of the control's display area. このモードの詳細については、次を参照してください。 Windows フォーム DataGridView コントロールで列の塗りつぶしモードします。For more information about this mode, see Column Fill Mode in the Windows Forms DataGridView Control.

行、列、およびヘッダーのサイズに合わせてセルの内容を自動的に調整を構成することもできます。You can also configure rows, columns, and headers to automatically adjust their sizes to fit their cell contents. この場合、サイズ調整は、セルの内容が変更されるたびに発生します。In this case, size adjustment occurs whenever cell contents change.

注意

自動サイズ変更には、ユーザーがセルの値を編集しますが、外のキャッシュされた値を変更する場合は発生しないときに発生します仮想モードを使用してカスタム データ キャッシュ内のセル値を保持している場合、CellValuePushedイベント ハンドラー。If you maintain cell values in a custom data cache using virtual mode, automatic sizing occurs when the user edits a cell value but does not occur when you alter a cached value outside of a CellValuePushed event handler. この場合、呼び出し、UpdateCellValueセルの表示を更新して、現在の自動サイズ変更モードを適用するコントロールを強制する方法。In this case, call the UpdateCellValue method to force the control to update the cell display and apply the current automatic sizing modes.

コンテンツ ベースの自動サイズ変更が 1 つのディメンションにのみ有効になっている場合などは、行がない列は、列やがない行を — とWrapModeも有効になっている、サイズの調整は、その他のディメンションが変更されるたびにも発生します。If content-based automatic sizing is enabled for one dimension only—that is, for rows but not columns, or for columns but not rows—and WrapMode is also enabled, size adjustment also occurs whenever the other dimension changes. たとえば、次の行がない列が自動サイズ変更用に構成されたとWrapModeが有効にすると、ユーザーが列の幅を変更する列の区分線をドラッグでき、行の高さは、セルの内容が完全に表示されるよう自動的に調整します。For example, if rows but not columns are configured for automatic sizing and WrapMode is enabled, users can drag column dividers to change the width of a column and row heights will automatically adjust so that cell contents are still fully displayed.

行と列のコンテンツ ベースの自動サイズ設定の両方を構成する場合とWrapModeが有効になって、DataGridViewセルの内容が変更され、新しいサイズを計算するときに、理想的なセルの高さと幅の比率を使用するたびに、コントロールのサイズは調整します。If you configure both rows and columns for content-based automatic sizing and WrapMode is enabled, the DataGridView control will adjust sizes whenever cell contents changed and will use an ideal cell height-to-width ratio when calculating new sizes.

次の 1 つ以上設定とコントロールの値をオーバーライドしない列のヘッダーと行のサイズ変更モードを構成するには、DataGridViewプロパティ。To configure the sizing mode for headers and rows and for columns that do not override the control value, set one or more of the following DataGridView properties:

個々 の列のコントロールの列のサイズ変更モードを無効にする次のように設定します。 そのAutoSizeModeプロパティ以外の値をNotSetします。To override the control's column sizing mode for an individual column, set its AutoSizeMode property to a value other than NotSet. 列のサイズ変更モードが実際に続くそのInheritedAutoSizeModeプロパティ。The sizing mode for a column is actually determined by its InheritedAutoSizeMode property. このプロパティの値が列のに基づいてAutoSizeModeプロパティ値の値がない限りNotSetその場合、コントロールのAutoSizeColumnsMode値が継承されます。The value of this property is based on the column's AutoSizeMode property value unless that value is NotSet, in which case the control's AutoSizeColumnsMode value is inherited.

コンテンツに基づく自動サイズ変更には注意大量のデータを使用する場合に使用します。Use content-based automatic resizing with caution when working with large amounts of data. パフォーマンスの低下を回避するには、コントロール内のすべての行を分析するのではなく、表示されている行のみに基づくサイズを計算する自動サイズ変更モードを使用します。To avoid performance penalties, use the automatic sizing modes that calculate sizes based only on the displayed rows rather than analyzing every row in the control. 最高のパフォーマンスを使用してプログラムによるサイズ変更代わりにするため、サイズを変更する特定の時点でなど直後に新しいデータが読み込まれます。For maximum performance, use programmatic resizing instead so that you can resize at specific times, such as immediately after new data is loaded.

コンテンツ ベースの自動サイズ変更モードには影響しません、行、列、またはヘッダー行または列を設定して非表示にしたVisibleプロパティまたはコントロールRowHeadersVisibleまたはColumnHeadersVisibleプロパティfalseします。Content-based automatic sizing modes do not affect rows, columns, or headers that you have hidden by setting the row or column Visible property or the control RowHeadersVisible or ColumnHeadersVisible properties to false. たとえば、大規模なセル値に合わせてサイズが自動的にその後、列を非表示の場合非表示の列は変更されませんのサイズの大きなセル値を含む行が削除された場合。For example, if a column is hidden after it is automatically sized to fit a large cell value, the hidden column will not change its size if the row containing the large cell value is deleted. 可視性が変更されたときに、自動サイズ変更は発生しませんので、列を変更するVisibleプロパティtrue現在の内容に基づいてサイズを再計算することを強制しません。Automatic sizing does not occur when visibility changes, so changing the column Visible property back to true will not force it to recalculate its size based on its current contents.

行、列、およびヘッダーの可視性に関係なく、プログラムによるコンテンツに基づくサイズ変更に影響します。Programmatic content-based resizing affects rows, columns, and headers regardless of their visibility.

プログラムによるサイズ変更Programmatic Resizing

自動サイズ設定を無効にすると、実際の幅または行、列、または、次のプロパティでヘッダーの高さをプログラムで設定できます。When automatic sizing is disabled, you can programmatically set the exact width or height of rows, columns, or headers through the following properties:

行、列、および、次のメソッドを使用してその内容に合わせてヘッダー サイズを変更することができますもプログラムで。You can also programmatically resize rows, columns, and headers to fit their contents using the following methods:

これらのメソッドは、行、列、またはヘッダーを 1 回ではなく継続的なサイズ変更するための構成にサイズ変更されます。These methods will resize rows, columns, or headers once rather than configuring them for continuous resizing. クリッピングなしすべてのセルの内容を表示する新しいサイズが自動的に計算します。The new sizes are automatically calculated to display all cell contents without clipping. ときにプログラムでサイズを変更する列を持つInheritedAutoSizeModeプロパティの値をFill、ただし、計算のコンテンツ ベースの幅を使用すると、列を比例的に調整FillWeightプロパティ値、および幅は、実際には列すべての列は、コントロールの使用可能な表示領域を入力できるようにこれらの新しい比率に従って計算されます。When you programmatically resize columns that have InheritedAutoSizeMode property values of Fill, however, the calculated content-based widths are used to proportionally adjust the column FillWeight property values, and the actually column widths are then calculated according to these new proportions so that all columns fill the available display area of the control.

プログラムによるサイズ変更は、継続的なサイズの変更によるパフォーマンス低下を回避するために便利です。Programmatic resizing is useful to avoid performance penalties with continuous resizing. 初期サイズを使用して、ユーザーのサイズ変更可能な行、列、およびヘッダーと列フィル モードに便利です。It is also useful to provide initial sizes for user-resizable rows, columns, and headers, and for column fill mode.

通常は特定の時点でプログラムによるサイズ変更メソッドを呼び出します。You will typically call the programmatic resizing methods at specific times. たとえば、データの読み込み後すぐにすべての列をプログラムでサイズ可能性があります。 または特定のセル値が変更された後にプログラムで特定の行サイズ可能性があります。For example, you might programmatically resize all columns immediately after loading data, or you might programmatically resize a specific row after a particular cell value has been modified.

コンテンツ ベースのサイズ変更動作をカスタマイズします。Customizing Content-based Sizing Behavior

派生を使用する場合は、サイズ変更動作をカスタマイズすることができますDataGridViewセル、行、および列の種類をオーバーライドすることで、 DataGridViewCell.GetPreferredSizeDataGridViewRow.GetPreferredHeight、またはDataGridViewColumn.GetPreferredWidthメソッドを呼び出して、派生でサイズ変更メソッドのオーバー ロードを保護またはDataGridViewコントロール。You can customize sizing behaviors when working with derived DataGridView cell, row, and column types by overriding the DataGridViewCell.GetPreferredSize, DataGridViewRow.GetPreferredHeight, or DataGridViewColumn.GetPreferredWidth methods or by calling protected resizing method overloads in a derived DataGridView control. 保護対象のサイズ変更メソッドのオーバー ロードは、理想的なセルの高さと幅を過度に幅または高さのセルの回避の比率を実現するためにペアで作業する設計されています。The protected resizing method overloads are designed to work in pairs to achieve an ideal cell height-to-width ratio, avoiding overly wide or tall cells. 呼び出す場合など、AutoResizeRows(DataGridViewAutoSizeRowsMode,Boolean)のオーバー ロード、AutoResizeRowsメソッドとの値を渡しますfalseBooleanパラメーター オーバー ロードは、最適な高さと、行内のセルの幅を計算するが、行の高さが調整されますのみです。For example, if you call the AutoResizeRows(DataGridViewAutoSizeRowsMode,Boolean) overload of the AutoResizeRows method and pass in a value of false for the Boolean parameter, the overload will calculate the ideal heights and widths for cells in the row, but it will adjust the row heights only. 呼び出す必要がありますし、AutoResizeColumns計算理想に列の幅を調整する方法。You must then call the AutoResizeColumns method to adjust the column widths to the calculated ideal.

コンテンツ ベースのサイズ変更オプションContent-based Sizing Options

サイズ変更プロパティおよびメソッドで使用される列挙体では、コンテンツ ベースのサイズ変更と同様の値があります。The enumerations used by sizing properties and methods have similar values for content-based sizing. これらの値では、適切なサイズの計算に使用するセルを制限できます。With these values, you can limit which cells are used to calculate the preferred sizes. すべてのサイズ変更の列挙、表示されているセルを参照する名前を持つ値は表示されている行のセルに、計算を制限します。For all sizing enumerations, values with names that refer to displayed cells limit their calculations to cells in displayed rows. 行の除外は、大量の行を使用する場合、パフォーマンスの低下を回避するために便利です。Excluding rows is useful to avoid a performance penalty when you are working with a large quantity of rows. 計算またはヘッダー以外のセルのセルの値を制限することもできます。You can also restrict calculations to cell values in header or nonheader cells.

関連項目See also