Windows フォーム DataGridView コントロールでの仮想モードVirtual Mode in the Windows Forms DataGridView Control

仮想モードの間の相互作用を管理することができます、DataGridViewコントロールとカスタム データ キャッシュします。With virtual mode, you can manage the interaction between the DataGridView control and a custom data cache. 仮想モードを実装するには、設定、VirtualModeプロパティをtrueし、このトピックで説明されているイベントの 1 つ以上を処理します。To implement virtual mode, set the VirtualMode property to true and handle one or more of the events described in this topic. 通常は、少なくともCellValueNeededイベントで、データ キャッシュ内の値をコントロールの外観を有効します。You will typically handle at least the CellValueNeeded event, which enables the control look up values in the data cache.

バインド モードと仮想モードBound Mode and Virtual Mode

仮想モードは、バインド モードを補完したりする必要がある場合にのみ必要があります。Virtual mode is necessary only when you need to supplement or replace bound mode. バインドのモードでは設定、DataSourceプロパティ、およびコントロールを自動的に、指定したソースからデータを読み込み、返送にユーザーが変更を送信します。In bound mode, you set the DataSource property and the control automatically loads the data from the specified source and submits user changes back to it. データ ソース自体が通常の並べ替えなどの操作を処理し、バインドされた列の表示を制御できます。You can control which of the bound columns are displayed, and the data source itself typically handles operations such as sorting.

バインド モードの補完Supplementing Bound Mode

バインド モードは、バインドされた列とバインドされていない列を表示することで補うことができます。You can supplement bound mode by displaying unbound columns along with the bound columns. これ「混合モード」とも呼ばれますが、計算値またはユーザー インターフェイス (UI) の制御などを表示するために便利です。This is sometimes called "mixed mode" and is useful for displaying things like calculated values or user-interface (UI) controls.

バインドされていない列では、データ ソースの外部であるために、データ ソースの並べ替え操作では無視されます。Because unbound columns are outside the data source, they are ignored by the data source's sorting operations. そのため、混在モードでの並べ替えを有効にするとローカル キャッシュ内でバインドされていないデータを管理してさせる仮想モードを実装、DataGridViewコントロールを操作します。Therefore, when you enable sorting in mixed mode, you must manage the unbound data in a local cache and implement virtual mode to let the DataGridView control interact with it.

仮想モードを使用して、非バインド列の値を維持する方法の詳細については、例を参照してください、DataGridViewCheckBoxColumn.ThreeStateプロパティとSystem.Windows.Forms.DataGridViewComboBoxColumnクラスのリファレンス トピック。For more information about using virtual mode to maintain the values in unbound columns, see the examples in the DataGridViewCheckBoxColumn.ThreeState property and System.Windows.Forms.DataGridViewComboBoxColumn class reference topics.

バインド モードの置換Replacing Bound Mode

バインド モードが、パフォーマンスのニーズを満たしていない場合は、仮想モードのイベント ハンドラーを使用して、カスタム キャッシュ内のすべてのデータを管理できます。If bound mode does not meet your performance needs, you can manage all your data in a custom cache through virtual-mode event handlers. ジャストイン タイム データのみを取得するメカニズムの読み込みを実装するために仮想モードを使用するなど、ネットワーク上のデータベースからデータが最適なパフォーマンスが必要です。For example, you can use virtual mode to implement a just-in-time data loading mechanism that retrieves only as much data from a networked database as is necessary for optimal performance. このシナリオは、低速ネットワーク接続経由でデータ量が多いと RAM または記憶域スペースの制限があるクライアント コンピューターを操作する場合に特に役立ちます。This scenario is particularly useful when working with large amounts of data over a slow network connection or with client machines that have a limited amount of RAM or storage space.

ジャストイン タイムのシナリオで仮想モードの使用に関する詳細については、次を参照してください。 Windows フォームの DataGridView コントロールで Just-In-Time データ読み込みで仮想モードの実装します。For more information about using virtual mode in a just-in-time scenario, see Implementing Virtual Mode with Just-In-Time Data Loading in the Windows Forms DataGridView Control.

仮想モードのイベントVirtual-Mode Events

データが読み取り専用である場合、CellValueNeededイベントが唯一のイベントを処理する必要があります。If your data is read-only, the CellValueNeeded event may be the only event you will need to handle. 仮想モードの追加のイベントでは、ユーザーを編集する、行の追加と削除、および行レベルのトランザクションなど特定の機能を有効にできます。Additional virtual-mode events let you enable specific functionality like user edits, row addition and deletion, and row-level transactions.

標準的なDataGridViewイベント (など、ユーザー追加の行を削除またはセルの値が場合に発生するイベントは、編集、解析、検証、または書式設定されます) の指定は、仮想モードに役立ちます。Some standard DataGridView events (such as events that occur when users add or delete rows, or when cell values are edited, parsed, validated, or formatted) are useful in virtual mode, as well. 通常はセルのツールヒント テキスト、セルと行のエラー テキスト、セルと行のショートカット メニューのデータ、および行の高さデータなど、バインドされたデータ ソースに格納された値を保持できるようにするイベントを処理することもできます。You can also handle events that let you maintain values not typically stored in a bound data source, such as cell ToolTip text, cell and row error text, cell and row shortcut menu data, and row height data.

行レベルのコミットのスコープを持つ読み取り/書き込みデータを管理する仮想モードの実装の詳細については、次を参照してください。チュートリアル。仮想モードの実装で、Windows フォーム DataGridView コントロールします。For more information about implementing virtual mode to manage read/write data with a row-level commit scope, see Walkthrough: Implementing Virtual Mode in the Windows Forms DataGridView Control.

セル レベルのコミットのスコープを使用して仮想モードを実装する例を参照してください、VirtualModeプロパティの参照トピック。For an example that implements virtual mode with a cell-level commit scope, see the VirtualMode property reference topic.

次のイベントにのみ発生するときに、VirtualModeプロパティに設定されてtrueします。The following events occur only when the VirtualMode property is set to true.

eventEvent 説明Description
CellValueNeeded 表示用のデータ キャッシュからのセル値を取得するコントロールで使用します。Used by the control to retrieve a cell value from the data cache for display. このイベントは、バインドされていない列のセルに対してのみ発生します。This event occurs only for cells in unbound columns.
CellValuePushed セルのユーザー入力をデータ キャッシュにコミットするためのコントロールで使用します。Used by the control to commit user input for a cell to the data cache. このイベントは、バインドされていない列のセルに対してのみ発生します。This event occurs only for cells in unbound columns.

呼び出す、UpdateCellValueメソッド以外のキャッシュされた値を変更するときに、CellValuePushedイベント ハンドラーの現在の値をコントロールに表示されるようにして、現時点で有効には、すべての自動サイズ変更モードを適用します。Call the UpdateCellValue method when changing a cached value outside of a CellValuePushed event handler to ensure that the current value is displayed in the control and to apply any automatic sizing modes currently in effect.
NewRowNeeded データ キャッシュ内の新しい行の必要性を示すために、コントロールで使用します。Used by the control to indicate the need for a new row in the data cache.
RowDirtyStateNeeded 行にコミットされていない変更があるかどうかを決定するコントロールで使用します。Used by the control to determine whether a row has any uncommitted changes.
CancelRowEdit コントロールで使用を示す行が、キャッシュされた値に戻る必要があります。Used by the control to indicate that a row should revert to its cached values.

次のイベントは仮想モードでは役立ちますに関係なく使用できます、VirtualModeプロパティの設定。The following events are useful in virtual mode, but can be used regardless of the VirtualMode property setting.

イベントEvents 説明Description
UserDeletingRow

UserDeletedRow

RowsRemoved

RowsAdded
ときに行が削除されるか、データ キャッシュを適宜更新する、追加のことを示す、コントロールで使用します。Used by the control to indicate when rows are deleted or added, letting you update the data cache accordingly.
CellFormatting

CellParsing

CellValidating

CellValidated

RowValidating

RowValidated
表示とを解析し、ユーザー入力を検証するには、セルの値を書式設定するコントロールによって使用されます。Used by the control to format cell values for display and to parse and validate user input.
CellToolTipTextNeeded セルのツールヒント テキストを取得する、コントロールによって使用されるときに、DataSourceプロパティを設定またはVirtualModeプロパティはtrueします。Used by the control to retrieve cell ToolTip text when the DataSource property is set or the VirtualMode property is true.

セルのツールヒントが表示される場合にのみ、ShowCellToolTipsプロパティの値がtrueします。Cell ToolTips are displayed only when the ShowCellToolTips property value is true.
CellErrorTextNeeded

RowErrorTextNeeded
セルまたは行のエラー テキストを取得する、コントロールによって使用されるときに、DataSourceプロパティを設定またはVirtualModeプロパティはtrueします。Used by the control to retrieve cell or row error text when the DataSource property is set or the VirtualMode property is true.

呼び出す、UpdateCellErrorTextメソッドまたはUpdateRowErrorTextメソッド、現在の値をコントロールに表示されるようにするセルまたは行のエラー テキストを変更するとします。Call the UpdateCellErrorText method or the UpdateRowErrorText method when you change the cell or row error text to ensure that the current value is displayed in the control.

セルと行のエラー グリフが表示されるときに、ShowCellErrorsShowRowErrorsプロパティの値はtrueします。Cell and row error glyphs are displayed when the ShowCellErrors and ShowRowErrors property values are true.
CellContextMenuStripNeeded

RowContextMenuStripNeeded
セルまたは行を取得する、コントロールによって使用されるContextMenuStripときにコントロールDataSourceプロパティを設定またはVirtualModeプロパティはtrueします。Used by the control to retrieve a cell or row ContextMenuStrip when the control DataSource property is set or the VirtualMode property is true.
RowHeightInfoNeeded

RowHeightInfoPushed
データ キャッシュ内の行の高さ情報を格納または取得するコントロールで使用します。Used by the control to retrieve or store row height information in the data cache. 呼び出す、UpdateRowHeightInfoメソッド以外のキャッシュされた行の高さ情報を変更するときに、RowHeightInfoPushedイベント ハンドラーを現在の値がコントロールの表示で使用されるようにします。Call the UpdateRowHeightInfo method when changing the cached row height information outside of a RowHeightInfoPushed event handler to ensure that the current value is used in the display of the control.

仮想モードでのベスト プラクティスBest Practices in Virtual Mode

大量のデータを効率的に使用するには仮想モードを実装する場合、使用効率的にしていることを確認するはも、DataGridViewコントロール自体。If you are implementing virtual mode in order to work efficiently with large amounts of data, you will also want to ensure that you are working efficiently with the DataGridView control itself. セルのスタイル、自動サイズ変更、選択内容、および行の共有の効率的な使用の詳細については、次を参照してください。 Windows フォーム DataGridView コントロールを拡張するためのベスト プラクティスします。For more information about the efficient use of cell styles, automatic sizing, selections, and row sharing, see Best Practices for Scaling the Windows Forms DataGridView Control.

関連項目See also