Windows Forms 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 하 고 하나 이상의이 항목에서 설명 하는 이벤트를 처리 합니다.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. 예를 들어-just-in-time 데이터 로드만 검색 하는 메커니즘을 구현 하 여 가상 모드를 사용할 수 있습니다 만큼의 데이터 네트워크에 연결 된 데이터베이스에서 최적의 성능을 위해 필요 합니다.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.

Just-in-time 시나리오에서 가상 모드를 사용 하는 방법에 대 한 자세한 내용은 참조 하세요. Windows Forms 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.

행 수준 커밋 범위를 사용 하 여 읽기/쓰기 데이터를 관리 하기 위해 가상 모드 구현 하는 방법에 대 한 자세한 내용은 참조 하세요. 연습: Forms DataGridView 컨트롤의 Windows에서 가상 모드 구현합니다.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.

이벤트(event)Event 설명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.

셀 및 행 오류 문자 모양을 표시 됩니다 때 합니다 ShowCellErrors 하 고 ShowRowErrors 속성 값은 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 Forms 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