다음을 통해 공유


DataGridViewRowCollection.AddRange(DataGridViewRow[]) 메서드

정의

지정된 개체를 DataGridViewRow 컬렉션에 추가합니다.

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

매개 변수

dataGridViewRows
DataGridViewRow[]

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

예외

dataGridViewRowsnull입니다.

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

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

  • 컨트롤의 모든 셀 선택

  • 선택 영역 지우기

-또는-

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

-또는-

의 속성이 DataSourceDataGridView 아닙니다 null.

-또는-

배열에 하나 이상의 항목이 dataGridViewRows 있습니다 null.

-또는-

DataGridView 열이 없습니다.

-또는-

배열에서 하나 이상의 행에 dataGridViewRowsDataGridView 없는 null속성 값이 있습니다.

-또는-

배열에서 하나 이상의 행에 dataGridViewRows 속성 값trueSelected 있습니다.

-또는-

배열에서 두 개 이상의 행이 dataGridViewRows 동일합니다.

-또는-

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

-또는-

배열의 행이 하나 이상 컨트롤에 dataGridViewRows 있는 열보다 많은 셀을 포함합니다.

-또는-

이 작업은 고정되지 않은 행 후에 고정된 행을 추가합니다.

예제

다음 코드 예제에서는 새 레코드의 행이 선택되어 설명 섹션에 표시된 버그를 해결하기 위해 이 메서드를 사용하는 AddRange 방법을 보여 줍니다.

// Workaround for bug that prevents DataGridViewRowCollection.AddRange
// from working when the row for new records is selected. 
private void AddRows(params DataGridViewRow[] rows)
{
    InsertRows(dataGridView1.RowCount - 1, rows);
}

// 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.AddRange
' from working when the row for new records is selected. 
Private Sub AddRows(ByVal ParamArray rows As DataGridViewRow())
    InsertRows(dataGridView1.RowCount - 1, rows)
End Sub

' 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

설명

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

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

중요합니다

버그로 인해 메서드는 AddRange 속성 true 이 있고 새 레코드의 행이 선택된 경우 AllowUserToAddRows 애플리케이션의 응답을 중지합니다. 이 버그를 해결하려면 이 메서드를 호출하기 전에 행 선택을 취소한 다음 행을 다시 선택해야 합니다. 자세한 내용은 이 항목의 코드 예제를 참조하세요.

적용 대상

추가 정보