다음을 통해 공유


DataGridViewRowCollection.InsertRange(Int32, DataGridViewRow[]) 메서드

정의

지정된 위치에서 DataGridViewRow 개체를 컬렉션에 삽입합니다.

public:
 virtual void InsertRange(int rowIndex, ... cli::array <System::Windows::Forms::DataGridViewRow ^> ^ dataGridViewRows);
public virtual void InsertRange (int rowIndex, params System.Windows.Forms.DataGridViewRow[] dataGridViewRows);
abstract member InsertRange : int * System.Windows.Forms.DataGridViewRow[] -> unit
override this.InsertRange : int * System.Windows.Forms.DataGridViewRow[] -> unit
Public Overridable Sub InsertRange (rowIndex As Integer, ParamArray dataGridViewRows As DataGridViewRow())

매개 변수

rowIndex
Int32

행을 삽입할 위치입니다.

dataGridViewRows
DataGridViewRow[]

DataGridViewRow 에 추가할 DataGridViewRowCollection개체의 배열입니다.

예외

dataGridViewRows이(가) null인 경우

rowIndex 가 0보다 작거나 컬렉션의 행 수보다 큽니다.

dataGridViewRows 에 행이 하나만 있으며, 이 행에는 컨트롤에 있는 열보다 많은 셀이 포함되어 있습니다.

연결된 DataGridView 컨트롤이 일시적으로 새 행이 추가되지 않도록 하는 다음 작업 중 하나를 수행합니다.

  • 컨트롤의 모든 셀 선택

  • 선택 영역 지우기

또는

이 메서드는 다음 DataGridView 이벤트 중 하나의 처리기에서 호출됩니다.

또는

rowIndex 이 컬렉션의 행 수와 같고 AllowUserToAddRowstrue입니다.

또는

DataSourceDataGridView 속성이 null이 아닙니다.

또는

dataGridViewRows 배열에 있는 하나 이상의 항목이 null인 경우

또는

DataGridView 에 열이 없습니다.

또는

dataGridViewRows 배열에 있는 하나 이상의 행에 대해 DataGridView 속성 값이 null이 아닌 경우

또는

dataGridViewRows 배열에 있는 하나 이상의 행에 대해 Selected 속성 값이 true인 경우

또는

dataGridViewRows 배열에 있는 둘 이상의 행이 동일한 경우

또는

dataGridViewRows 배열에 있는 하나 이상의 행에 컨트롤의 해당 열 형식과 호환되지 않는 형식의 셀이 하나 이상 포함되어 있는 경우

또는

dataGridViewRows 배열에 있는 하나 이상의 행에 컨트롤의 열 수보다 많은 셀이 포함되어 있는 경우

또는

이 작업에서는 고정되지 않은 행 뒤에 고정된 행을 삽입하거나 고정된 행 앞에 고정되지 않은 행을 삽입합니다.

예제

다음 코드 예제를 사용 하는 방법에 설명 섹션에 InsertRange 표시 된 버그를 해결 하기 위해 선택한 행 앞에 행을 삽입 하는 방법을 보여 줍니다.

// Workaround for bug that prevents DataGridViewRowCollection.InsertRange
// from working when any rows before the insertion index are selected.
private void InsertRows(int index, params DataGridViewRow[] rows)
{
    System.Collections.Generic.List<int> selectedIndexes =
        new System.Collections.Generic.List<int>();
    foreach (DataGridViewRow row in dataGridView1.SelectedRows)
    {
        if (row.Index >= index)
        {
            selectedIndexes.Add(row.Index);
            row.Selected = false;
        }
    }
    dataGridView1.Rows.InsertRange(index, rows);
    foreach (int selectedIndex in selectedIndexes)
    {
        dataGridView1.Rows[selectedIndex].Selected = true;
    }
}
' Workaround for bug that prevents DataGridViewRowCollection.InsertRange
' from working when any rows before the insertion index are selected.
Private Sub InsertRows(ByVal index As Integer, _
    ByVal ParamArray rows As DataGridViewRow())

    Dim selectedIndexes As New System.Collections.Generic.List(Of Integer)

    For Each row As DataGridViewRow In dataGridView1.SelectedRows
        If row.Index >= index Then
            selectedIndexes.Add(row.Index)
            row.Selected = False
        End If
    Next row

    dataGridView1.Rows.InsertRange(index, rows)

    For Each selectedIndex As Integer In selectedIndexes
        dataGridView1.Rows(selectedIndex).Selected = True
    Next selectedIndex

End Sub

설명

메서드는 InsertRange 가능한 경우 에 공유 행을 DataGridViewRowCollection추가합니다. 그렇지 않으면 새 행이 공유되지 않습니다. 자세한 내용은 Windows Forms DataGridView 컨트롤의 크기를 조정하는 최선의 방법을 참조하세요.

컨트롤의 행은 새 행이 추가될 때 자동으로 정렬되지 않습니다. 새 행을 올바른 위치로 정렬하려면 이벤트 처리기에서 메서드를 DataGridView.RowsAdded 호출 DataGridView.Sort 합니다. 사용자가 셀을 DataGridView.Sort 수정할 때 이벤트 처리기에서 CellValueChanged 메서드를 호출하여 행을 정렬할 수도 있습니다.

중요

버그로 인해 합니다 InsertRange 메서드는 애플리케이션 중지 응답 경우 모든 행이 되도록 인덱스를 사용 하 여 보다 큰 rowIndex 선택 됩니다. 이 버그를 해결하려면 이 메서드를 호출하기 전에 이러한 행의 선택을 취소하고 나중에 행을 다시 선택해야 합니다. 자세한 내용은 이 항목의 코드 예제를 참조하세요.

적용 대상

추가 정보